15 unstable releases (3 breaking)

0.3.0-alpha1 Feb 24, 2019
0.2.0 Oct 23, 2018
0.1.4 Sep 26, 2018
0.1.2 Apr 27, 2018
0.0.2 Dec 13, 2015

#363 in Graphics APIs

Download history 120/week @ 2025-07-31 162/week @ 2025-08-07 189/week @ 2025-08-14 232/week @ 2025-08-21 154/week @ 2025-08-28 251/week @ 2025-09-04 176/week @ 2025-09-11 207/week @ 2025-09-18 300/week @ 2025-09-25 165/week @ 2025-10-02 137/week @ 2025-10-09 275/week @ 2025-10-16 198/week @ 2025-10-23 227/week @ 2025-10-30 396/week @ 2025-11-06 175/week @ 2025-11-13

1,031 downloads per month
Used in 7 crates (via druid-win-shell)

MIT/Apache

145KB
4.5K SLoC

Safe abstractions for drawing on Windows using Direct2D

Example

extern crate direct2d;

use direct2d::{DeviceContext, RenderTarget};
use direct2d::brush::SolidColorBrush;
use direct2d::image::Bitmap;

fn draw(context: &mut DeviceContext, target: &Bitmap) {
    let brush = SolidColorBrush::create(&context)
        .with_color(0xFF_7F_7F)
        .build().unwrap();

    context.begin_draw();
    context.set_target(target);
    context.clear(0xFF_FF_FF);
    
    context.draw_line((10.0, 10.0), (20.0, 20.0), &brush, 2.0, None);
    context.draw_line((10.0, 20.0), (20.0, 10.0), &brush, 2.0, None);

    match context.end_draw() {
        Ok(_) => {/* cool */},
        Err(_) => panic!("Uh oh, rendering failed!"),
    }
}

Dependencies

~0–0.8MB
~13K SLoC