#graphics #pixel #pure #cpu #image #up #paint

farba

用纯Rust编写的CPU图形库

2个版本

0.1.1 2023年4月13日
0.1.0 2023年4月13日

#744 in 图像

MIT许可证

245KB
659

Farba

Crates.io GitHub

用纯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