📌 编写初衷 —— 只需定义需要绘制的内容,即可快速实现漂亮的列表/网格效果,无需关心复杂的绘制与交互实现。
基于 godking.paint (GDI+) 封装,提供 模板驱动 · 六态样式 · 事件系统 · 分页导航 等完整能力。
🧩 功能构成
📐 布局引擎
- 行列控制 – 指定 colnum / rownum 或根据 itemWidth/Height 自动计算
- 自适应拉伸 – autoSizeWidth / autoSizeHeight 填满容器
- 边距与对齐 – padLeft/Right/Top/Bottom,vertical 竖向排列
- 自动适配 – autoFit 动态调整 plus 尺寸以完整显示内容
🧬 项目模板 (itemModel)
- rect 矩形/进度条
- img 图像 (支持URL缓存·缩略图·EXIF旋转)
- text 文本 (字体/对齐/省略号)
- line 直线
- paint 完全自定义绘制 (proc回调)
🎨 六态样式系统
- disabled 禁用态 (最高优先级)
- checked 元素选中态
- hovered 鼠标悬停元素
- itemselected 项目被选中
- itemhovered 鼠标悬停项目
- normal 正常态 (默认)
- 每个元素均可独立配置六态颜色/图片/字体
🖱️ 交互事件
- onClick – 点击元素/项目
- onRightClick – 右键点击
- onDoubleClick – 双击
- onMouseHover – 悬停
- onSelChanged – 选中项改变
- onDrawElement – 动态修改元素数据
- allClickEvent 支持禁用状态下仍触发点击
✨ 特色亮点
⚡
局部刷新 · 高性能绘制
仅重绘变更项,clip剪裁优化
🧩
模板与数据分离
itemModel 定义样式,itemList 承载数据
📱
DPI 自适应
setDPI() 缩放所有尺寸,适配高DPI
🎯
元素级交互
每个元素独立响应 click / hover / check
⚙️ 核心配置表 (config)
| 参数 | 类型 | 说明 |
| itemWidth / itemHeight | number | 项目最小宽高,为0时自动根据行列计算 |
| colnum / rownum | number | 列数/行数,为0时根据item尺寸自动计算 |
| autoSizeWidth / autoSizeHeight | boolean | 拉伸项目填满plus宽度/高度 |
| padLeft / padTop / padRight / padBottom | number | 项目区域与plus边界的留白 |
| autoFit | boolean | 自动调整plus尺寸以显示全部行列 |
| vertical | boolean | 竖向排列 (行滚动方向变为横向) |
| bkcolor / bkimg / bkimgmode | color / path / bitmap / 0-2 | 背景颜色、背景图及平铺模式 |
| singleCheck | 0 | 1 | 2 | 0:多选 / 1:项目内单选 / 2:全局单选 |
| dpi | number | 强制DPI缩放,0表示自动检测 |
📄 快速上手 · 代码片段
import godking.customPlus;
var model = {
{ type="rect", rectf={x=3;y=3;width=-3;height=-3}, fillcolor=0xFFEEEEEE },
{ type="img", name="avatar", rectf={x=10;y=10;width=80;height=80} },
{ type="text", name="title", rectf={x=100;y=12;width=-10;height=20}, font={name="Tahoma",point=11} }
};
var data = {
{ avatar="/res/1.png", title="张三" },
{ avatar="/res/2.png", title="李四" }
};
var p = godking.customPlus(winform.plus, model, data, {
colnum=3, rownum=2, itemWidth=100, itemHeight=130,
padLeft=10, padTop=10, autoSizeWidth=true
});
p.onClick = function(itemIndex, eleIndex, eleName) {
win.msgbox("点击了 " ++ eleName ++ " 元素");
};
p.toNextPage();
p.toItem(5);
p.update(itemIndex);
🏆 核心优势
🚀 开发效率
配置即界面,数行代码实现复杂列表,无需手写GDI+绘制循环。
🎨 视觉一致性
六态样式体系保证交互反馈统一,支持圆角、阴影、渐变等丰富效果。
🧩 高可扩展性
paint 元素支持完全自定义绘制,可嵌入任意GDI+逻辑,不受限内置类型。
⚡ 性能优化
局部刷新、缩略图、clip剪裁、位图缓存,流畅支持数百项列表。
📌 总结 —— godking.customPlus 是一个为 aardio 开发者打造的高效自绘列表解决方案。
它将复杂的 GDI+ 绘制、鼠标交互、状态管理、布局计算封装在简洁的配置中,让开发者专注于业务数据与视觉创意。
无论是简单的菜单列表,还是包含图片、进度条、自定义绘制的复杂卡片,都可以通过统一的模板机制快速实现。
🔗 配套 godking.paint 库提供丰富的绘图基元,两者结合构成了 aardio 桌面应用界面自绘的强力工具链。