Simple example that displays a canvas window and renders a triangle
()
| 5 | /// Simple example that displays a canvas window and renders a triangle |
| 6 | /// |
| 7 | pub fn main() { |
| 8 | with_2d_graphics(|| { |
| 9 | // Create a window |
| 10 | let canvas = create_drawing_window("Basic sprite rendering"); |
| 11 | |
| 12 | // Sprites are a way to rapidly repeat a set of drawing instructions |
| 13 | canvas.draw(|gc| { |
| 14 | // Clear the canvas and set up the coordinates |
| 15 | gc.clear_canvas(Color::Rgba(0.0, 2.0, 0.0, 1.0)); |
| 16 | gc.canvas_height(1000.0); |
| 17 | gc.center_region(0.0, 0.0, 1000.0, 1000.0); |
| 18 | |
| 19 | // Create a triangle sprite |
| 20 | gc.sprite(SpriteId(0)); |
| 21 | gc.clear_sprite(); |
| 22 | gc.new_path(); |
| 23 | gc.move_to(200.0, 200.0); |
| 24 | gc.line_to(800.0, 200.0); |
| 25 | gc.line_to(500.0, 800.0); |
| 26 | gc.line_to(200.0, 200.0); |
| 27 | |
| 28 | gc.fill_color(Color::Rgba(0.8, 0.4, 0.2, 1.0)); |
| 29 | gc.fill(); |
| 30 | |
| 31 | // Draw the triangle in a few places |
| 32 | gc.layer(LayerId(0)); |
| 33 | |
| 34 | gc.sprite_transform(SpriteTransform::Identity); |
| 35 | gc.draw_sprite(SpriteId(0)); |
| 36 | |
| 37 | gc.sprite_transform(SpriteTransform::Identity); |
| 38 | gc.sprite_transform(SpriteTransform::Translate(100.0, 100.0)); |
| 39 | gc.draw_sprite(SpriteId(0)); |
| 40 | |
| 41 | gc.sprite_transform(SpriteTransform::Identity); |
| 42 | gc.sprite_transform(SpriteTransform::Translate(200.0, 100.0)); |
| 43 | gc.draw_sprite(SpriteId(0)); |
| 44 | |
| 45 | gc.sprite_transform(SpriteTransform::Identity); |
| 46 | gc.sprite_transform(SpriteTransform::Translate(300.0, 100.0)); |
| 47 | gc.draw_sprite(SpriteId(0)); |
| 48 | }); |
| 49 | }); |
| 50 | } |
nothing calls this directly
no test coverage detected