2个版本
0.1.1 | 2023年4月13日 |
---|---|
0.1.0 | 2023年4月13日 |
#744 in 图像
245KB
659 行
Farba
用纯Rust编写的CPU图形库
该库不关注图像显示。它只将像素填充到内存中。如何处理这些像素取决于您。
该名称发音为"farba"(按其拼写方式),是乌克兰语中“油漆”的意思。
示例
3D立方体
$ cargo run --example 3d_cube --features="window"
日本国旗
$ cargo run --example flag_of_japan --features="image"
use farba::{Canvas, RGBAColor};
const CANVAS_WIDTH: usize = 900;
const CANVAS_HEIGHT: usize = 600;
fn main() {
let mut canvas = Canvas::new(CANVAS_WIDTH, CANVAS_HEIGHT);
// Taken from https://upload.wikimedia.org/wikipedia/en/9/9e/Flag_of_Japan.svg
canvas.fill(RGBAColor::WHITE);
canvas.circle(
(CANVAS_WIDTH / 2) as i32,
(CANVAS_HEIGHT / 2) as i32,
180,
RGBAColor::from_rgb(0xBC, 0x00, 0x2D),
);
canvas.save_to_file("./examples/flag_of_japan.png");
}
矩形
$ cargo run --example rectangle --features="image"
use farba::{Canvas, RGBAColor};
fn main() {
let mut canvas = Canvas::new(400, 400);
canvas.fill(RGBAColor::WHITE);
// Left eye
canvas.rect(80, 80, 30, 80, RGBAColor::BLACK);
// Right eye
canvas.rect(290, 80, 30, 80, RGBAColor::BLACK);
// Mouth
canvas.rect(80, 260, 30, 60, RGBAColor::BLACK);
canvas.rect(290, 260, 30, 60, RGBAColor::BLACK);
canvas.rect(80, 290, 240, 30, RGBAColor::BLACK);
canvas.save_to_file("./examples/rectangle.png");
}
依赖项
~0–2.8MB
~43K SLoC