logo
pub struct Canvas<Message, P> where
    P: Program<Message>, 
{ /* private fields */ }
Available on crate feature canvas only.
Expand description

A widget capable of drawing 2D graphics.

Examples

The repository has a couple of examples showcasing how to use a Canvas:

  • clock, an application that uses the Canvas widget to draw a clock and its hands to display the current time.
  • game_of_life, an interactive version of the Game of Life, invented by John Conway.
  • solar_system, an animated solar system drawn using the Canvas widget and showcasing how to compose different transforms.

Drawing a simple circle

If you want to get a quick overview, here’s how we can draw a simple circle:

use iced::canvas::{self, Canvas, Cursor, Fill, Frame, Geometry, Path, Program};
use iced::{Color, Rectangle};

// First, we define the data we need for drawing
#[derive(Debug)]
struct Circle {
    radius: f32,
}

// Then, we implement the `Program` trait
impl Program<()> for Circle {
    fn draw(&self, bounds: Rectangle, _cursor: Cursor) -> Vec<Geometry>{
        // We prepare a new `Frame`
        let mut frame = Frame::new(bounds.size());

        // We create a `Path` representing a simple circle
        let circle = Path::circle(frame.center(), self.radius);

        // And fill it with some color
        frame.fill(&circle, Color::BLACK);

        // Finally, we produce the geometry
        vec![frame.into_geometry()]
    }
}

// Finally, we simply use our `Circle` to create the `Canvas`!
let canvas = Canvas::new(Circle { radius: 50.0 });

Implementations

Creates a new Canvas.

Sets the width of the Canvas.

Sets the height of the Canvas.

Trait Implementations

Formats the value using the given formatter. Read more

Returns the width of the Widget.

Returns the height of the Widget.

Returns the Node of the Widget. Read more

Processes a runtime Event. Read more

Returns the current mouse::Interaction of the Widget. Read more

Draws the Widget using the associated Renderer.

Returns the overlay of the Widget, if there is any.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The alignment of pointer.

The type for initializers.

Initializes a with the given initializer. Read more

Dereferences the given pointer. Read more

Mutably dereferences the given pointer. Read more

Drops the object pointed to by the given pointer. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.