37个版本
0.8.5 | 2024年3月7日 |
---|---|
0.8.4 | 2023年10月13日 |
0.8.3 | 2023年9月22日 |
0.8.2 | 2023年7月21日 |
0.5.2 | 2018年3月22日 |
#107 in 图像
每月157次下载
用于 10 个Crate(6个直接使用)
75KB
1K SLoC
blit
文档
使用遮罩颜色或alpha阈值快速绘制精灵。
交互式演示
此Crate与RGBA u32
缓冲区一起工作。alpha通道只能通过单个阈值读取,将其转换为二进制透明或非透明颜色。这种限制存在的原因是它允许高效的渲染优化。
为了在不进行类型转换的情况下方便地使用此Crate,大多数接受数字的函数都是泛型的,数字类型为 num_traits::ToPrimitive
,这可能会有些令人困惑,但可以将任何数字直接传递给这些函数。
在使用此Crate时,最重要的函数是 Blit::blit
,该函数针对 BlitBuffer
实现。
示例
use blit::{Blit, ToBlitBuffer, BlitOptions, geom::Size};
const CANVAS_SIZE: Size = Size { width: 180, height: 180 };
const MASK_COLOR: u32 = 0xFF_00_FF;
// Create a buffer in which we'll draw our image
let mut canvas: Vec<u32> = vec![0xFF_FF_FF_FF; CANVAS_SIZE.pixels()];
// Load the image from disk using the `image` crate
let img = image::open("examples/smiley_rgb.png").unwrap().into_rgb8();
// Blit by creating a special blitting buffer first where the MASK_COLOR will be the color that will be made transparent
let blit_buffer = img.to_blit_buffer_with_mask_color(MASK_COLOR);
// Draw the image 2 times to the buffer
blit_buffer.blit(&mut canvas, CANVAS_SIZE, &BlitOptions::new_position(10, 10));
blit_buffer.blit(&mut canvas, CANVAS_SIZE, &BlitOptions::new_position(20, 20));
依赖项
~0.4–1.7MB
~32K SLoC