7个版本 (破坏性更新)
0.5.0 | 2023年7月17日 |
---|---|
0.4.0 | 2023年6月4日 |
0.3.0 | 2023年6月3日 |
0.2.0 | 2022年9月2日 |
0.0.2 | 2022年2月22日 |
#172 in 图形API
每月138次下载
29KB
410 行
关于项目
这个 Rust 库是 嵌入式图形 生态系统中的帧缓冲区方法的实现。目标是一次性批量写入所有屏幕像素,而不是对单独的原始数据执行多个更新。
在多个操作中进行图形合成并在显示上进行直接更新可能导致闪烁,并且清除屏幕上的先前内容更困难。帧缓冲区通过在内存中的显示上绘制来帮助处理这个问题,因此最终显示图像可以一次推送到您的硬件显示。
当您需要更新屏幕的大部分区域或根本不希望处理部分显示更新时,这种技术非常有用,但它以更高的RAM使用量和更多流向显示器的流量为代价。此crate还具有DMA支持,可以增强较大显示更新的性能。
入门
确保您的 rust
环境已配置
安装
-
将库添加到您的
Cargo.toml
[dependencies] embedded-graphics-framebuf = "0.5.0"
-
在您的代码中使用库
use embedded_graphics_framebuf::FrameBuf; // ... // Backend for the buffer let mut data = [BinaryColor::Off; 12 * 11]; let mut fbuf = FrameBuf::new(&mut data, 12, 11); // You would use a "real" display here... let mut display: MockDisplay<BinaryColor> = MockDisplay::new(); Line::new(Point::new(2, 2), Point::new(10, 2)) .into_styled(PrimitiveStyle::with_stroke(BinaryColor::On, 2)) .draw(&mut fbuf) .unwrap(); // Write it all to the display let area = Rectangle::new(Point::new(0, 0), fbuf.size()); display.fill_contiguous(&area, data).unwrap();
-
到这一点为止,您的闪烁问题应该已经解决了 :)
路线图
- 添加测试
- 添加rustdocs
- 与GitHub Actions集成CI
- 更好的错误生成和处理
有关提议的功能(以及已知问题的)的完整列表,请参阅 开放问题。
许可证
在MIT许可证下分发。有关更多信息,请参阅 LICENSE
。
联系
伯纳德·科博斯 - @bkobos - [email protected]
约纳塔恩 - jounathaen at mail dot de
项目链接: https://github.com/bernii/embedded-graphics-framebuf
致谢
依赖项
~3.5MB
~35K SLoC