linear_gradient/
linear_gradient.rs

1use tiny_skia::*;
2
3fn main() {
4    let mut paint = Paint::default();
5    paint.anti_alias = false;
6    paint.shader = LinearGradient::new(
7        Point::from_xy(100.0, 100.0),
8        Point::from_xy(900.0, 900.0),
9        vec![
10            GradientStop::new(0.0, Color::from_rgba8(50, 127, 150, 200)),
11            GradientStop::new(1.0, Color::from_rgba8(220, 140, 75, 180)),
12        ],
13        SpreadMode::Pad,
14        Transform::identity(),
15    )
16    .unwrap();
17
18    let mut pb = PathBuilder::new();
19    pb.move_to(60.0, 60.0);
20    pb.line_to(160.0, 940.0);
21    pb.cubic_to(380.0, 840.0, 660.0, 800.0, 940.0, 800.0);
22    pb.cubic_to(740.0, 460.0, 440.0, 160.0, 60.0, 60.0);
23    pb.close();
24    let path = pb.finish().unwrap();
25
26    let mut pixmap = Pixmap::new(1000, 1000).unwrap();
27    pixmap.fill_path(
28        &path,
29        &paint,
30        FillRule::Winding,
31        Transform::identity(),
32        None,
33    );
34    pixmap.save_png("image.png").unwrap();
35}