51个版本 (17个重大更改)
0.17.0 | 2024年4月18日 |
---|---|
0.16.0 | 2024年2月23日 |
0.15.1 | 2024年2月16日 |
0.14.0 | 2023年9月28日 |
0.0.7 | 2015年2月27日 |
#10 in 图像
每月73,133次下载
用于 236 个crate(122个直接使用)
83KB
2K SLoC
SVG
该包提供SVG编写器和解析器。
示例:编写
use svg::Document;
use svg::node::element::Path;
use svg::node::element::path::Data;
let data = Data::new()
.move_to((10, 10))
.line_by((0, 50))
.line_by((50, 0))
.line_by((0, -50))
.close();
let path = Path::new()
.set("fill", "none")
.set("stroke", "black")
.set("stroke-width", 3)
.set("d", data);
let document = Document::new()
.set("viewBox", (0, 0, 70, 70))
.add(path);
svg::save("image.svg", &document).unwrap();
示例:解析
use svg::node::element::path::{Command, Data};
use svg::node::element::tag::Path;
use svg::parser::Event;
let path = "image.svg";
let mut content = String::new();
for event in svg::open(path, &mut content).unwrap() {
match event {
Event::Tag(Path, _, attributes) => {
let data = attributes.get("d").unwrap();
let data = Data::parse(data).unwrap();
for command in data.iter() {
match command {
&Command::Move(..) => { /* … */ },
&Command::Line(..) => { /* … */ },
_ => {}
}
}
}
_ => {}
}
}
贡献
非常欢迎您的贡献。请随时提交问题或拉取请求。请注意,任何提交给项目包含的贡献将根据LICENSE.md中给出的条款进行许可。