Image Renderer
一个功能完整的 Rust 图像处理库,参考 Skia API 风格设计,提供简洁易用的 2D 图形绘制能力。
✨ 主要特性
-
🎨 丰富的绘图功能
- 基本图形:矩形、圆形、椭圆、线条
- 圆角矩形、自定义边框
- 虚线样式支持(短虚线、长虚线、点状、点划线等)
-
📝 文本渲染
- 支持系统字体和自定义字体
- 可调节字体大小、颜色
- 支持加粗、斜体样式
-
🖼️ 图像处理
- 图片加载与保存(PNG、JPEG)
- 九宫格(Nine-Patch)图片绘制
- 图像变换和渲染
-
🎯 高性能
- Release 模式下启用 LTO 优化
- 零成本抽象设计
- 高效的内存管理
📦 安装
在 Cargo.toml 中添加依赖:
[]
= "0.1.0"
🚀 快速开始
基础绘制示例
use ;
虚线绘制
use ;
let mut canvas = new_with_color?;
// 创建虚线画笔
let mut paint = stroke;
paint.set_dash_style;
// 绘制虚线
canvas.draw_dashed_line;
canvas.save?;
九宫格图片绘制
use ;
// 加载源图片
let source_image = from_file?;
// 创建画布
let mut canvas = new_with_color?;
// 定义九宫格的中心区域(保留边缘 20 像素)
let center = new;
// 绘制到目标区域(会自动拉伸)
let dst = new;
canvas.draw_image_nine?;
canvas.save?;
自定义边框
use ;
let mut canvas = new_with_color?;
// 创建自定义边框
let border = Border ;
let radius = BorderRadius ;
let rect = new;
let paint = fill;
canvas.draw_rect_with_border;
canvas.save?;
📚 核心 API
Canvas(画布)
// 创建画布
let canvas = new?;
let canvas = new_with_color?;
// 清空画布
canvas.clear;
// 保存图片
canvas.save?;
canvas.save_with_format?;
Paint(画笔)
// 创建填充画笔
let paint = fill;
// 创建描边画笔
let paint = stroke;
// 设置虚线样式
paint.set_dash_style;
Color(颜色)
// 预定义颜色
RED
GREEN
BLUE
WHITE
BLACK
// RGB 创建
rgb
// RGBA 创建
rgba
// 十六进制创建
from_hex?
from_hex?
绘图方法
// 绘制矩形
canvas.draw_rect;
canvas.draw_rounded_rect;
// 绘制圆形和椭圆
canvas.draw_circle;
canvas.draw_oval;
// 绘制线条
canvas.draw_line;
canvas.draw_dashed_line;
// 绘制文本
canvas.draw_text;
// 绘制图片
canvas.draw_image?;
canvas.draw_image_nine?;
🎨 虚线样式
支持多种虚线样式:
DashStyle::Solid- 实线DashStyle::ShortDash- 短虚线DashStyle::LongDash- 长虚线DashStyle::Dot- 点状DashStyle::DashDot- 点划线DashStyle::DashDotDot- 双点划线DashStyle::Custom(Vec<f32>)- 自定义模式
🔧 运行示例
项目包含完整的示例程序,展示了所有主要功能:
# 运行示例
# 运行测试
# 构建 Release 版本
运行后会生成以下示例图片:
output_basic.png- 基础绘制示例output_nine_patch.png- 九宫格绘制示例output_dashed_lines.png- 虚线样式示例output_custom_borders.png- 自定义边框示例
📖 文档
查看完整的 API 文档:
🛠️ 技术栈
- 图像处理: image - 图片编解码
- 图像操作: imageproc - 图像处理算法
- 字体渲染: rusttype + font-kit
- 错误处理: thiserror + anyhow
- 日志: tracing
🤝 贡献
欢迎提交 Issue 和 Pull Request!
📄 许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件
👤 作者
Jerry jerry@jerry.moe