3个版本
0.1.2 | 2023年3月31日 |
---|---|
0.1.1 | 2023年3月31日 |
0.1.0 | 2023年3月31日 |
在 可视化 中排名第249
每月下载33次
23KB
169 行
simulate-lcd
一个简单的库,用于模拟单色点阵显示屏,例如单色LCD屏幕。
文档
示例
use std::{thread::sleep, time::Duration};
use rand::{thread_rng, Rng};
use sdl2::event::Event;
use simulate_lcd::{Bitmap, LcdScreen}
use simulate_lcd::{LCD_DARK_GREEN, LCD_LIGHT_GREEN};
const NANOS_PER_SEC: u64 = 1_000_000_000;
fn main() {
let sdl_context = sdl2::init().unwrap();
let mut screen = LcdScreen::<64, 96>::new(
&sdl_context,
"LCD Demo: Random",
LCD_DARK_GREEN,
LCD_LIGHT_GREEN,
10,
10,
)
.unwrap();
let mut event_pump = sdl_context.event_pump().unwrap();
'running: loop {
for event in event_pump.poll_iter() {
match event {
Event::Quit { .. } => break 'running,
_ => {}
}
}
let mut rng = thread_rng();
let random_bits: Vec<[bool; 96]> = (0..64)
.map(|_| rng.gen())
.collect();
screen.draw_bitmap(&random_bits.try_into().unwrap())
.unwrap();
sleep(Duration::new(0, NANOS_PER_SEC / 60));
}
}
更多示例可以在示例文件夹中找到。
使用方法
LcdScreen
是此crate提供的主要类型。要创建具有 R
行和 C
列点的新的模拟屏幕窗口,请使用函数 LcdScreen::<R, C>::new
,以下参数
sdl_context
: 一个Sdl
上下文对象title
: 窗口标题on_color
: 点在开启时的颜色。例如,在背光LCD屏幕上接近黑色off_color
: 点在关闭时的颜色。例如,在绿色背光LCD屏幕上的绿色dot_width
: 实际窗口中点的宽度(像素)dot_height
: 实际窗口中点的高度(像素)
当 LcdScreen
对象被丢弃时,包括在其创建的作用域结束时,屏幕将消失。使用循环或其他设备来阻止屏幕对象被丢弃。
可以使用 draw_bitmap
方法在屏幕上绘制新图像。draw_bitmap
方法接受任何可以转换为 [[
bool
;
C
];
R
]
数组的对象。该行主序数组中的每个 true
表示一个“开启”的点。simulate-lcd 提供了 Bitmap<C, R>
作为 [[
bool
;
C
];
R
]
的便捷别名。
屏幕上的“开启”和“关闭”颜色是 sdl2::pixels::Color
对象。它们可以通过 sdl2::pixels::Color
函数从 RGB 值创建。simulate-lcd 提供了 LCD_DARK_GREEN
和 LCD_LIGHT_GREEN
常量,用于模拟绿色背光 LCD 屏幕。
设置
simulate-lcd 基于库 sdl2 构建。创建一个新的 LcdScreen
需要一个由 Sdl
函数创建的 sdl2::init()
函数创建的 Sdl
上下文对象。请注意,sdl2 可能需要比仅仅添加 crate 更多的设置。有关详细信息,请参阅 sdl2 README。
许可证
根据 Apache 许可证 2.0 版本(https://apache.ac.cn/licenses/LICENSE-2.0)授权。
依赖项
~16MB
~345K SLoC