40 个版本
0.8.4 | 2024年4月11日 |
---|---|
0.8.3 | 2023年9月15日 |
0.8.2 | 2023年1月19日 |
0.8.1 | 2022年7月22日 |
0.6.1 | 2019年7月23日 |
#19 in 图像
9,976 每月下载量
用于 35 个crate (20 直接)
160KB
3.5K SLoC
raqote
一个纯Rust 2D 图形库。
Raqote 是一个小型、简单、快速的 2D 图形库。
当前功能
- 路径填充
- 描边
- 虚线
- 图像、纯色和渐变填充
- 矩形和路径裁剪
- 混合模式
- 图层
- 图像重复模式
- 全局透明度
知名用户
示例
以下是一个绘制到 png 的示例
use raqote::*;
let mut dt = DrawTarget::new(400, 400);
let mut pb = PathBuilder::new();
pb.move_to(100., 10.);
pb.cubic_to(150., 40., 175., 0., 200., 10.);
pb.quad_to(120., 100., 80., 200.);
pb.quad_to(150., 180., 300., 300.);
pb.close();
let path = pb.finish();
let gradient = Source::new_radial_gradient(
Gradient {
stops: vec![
GradientStop {
position: 0.2,
color: Color::new(0xff, 0, 0xff, 0),
},
GradientStop {
position: 0.8,
color: Color::new(0xff, 0xff, 0xff, 0xff),
},
GradientStop {
position: 1.,
color: Color::new(0xff, 0xff, 0, 0xff),
},
],
},
Point::new(150., 150.),
128.,
Spread::Pad,
);
dt.fill(&path, &gradient, &DrawOptions::new());
let mut pb = PathBuilder::new();
pb.move_to(100., 100.);
pb.line_to(300., 300.);
pb.line_to(200., 300.);
let path = pb.finish();
dt.stroke(
&path,
&Source::Solid(SolidSource {
r: 0x0,
g: 0x0,
b: 0x80,
a: 0x80,
}),
&StrokeStyle {
cap: LineCap::Round,
join: LineJoin::Round,
width: 10.,
miter_limit: 2.,
dash_array: vec![10., 18.],
dash_offset: 16.,
},
&DrawOptions::new()
);
dt.write_png("example.png");
生成
依赖关系
~2–12MB
~121K SLoC