godking.customPlus - 自绘组件库 · 功能分析报告

光庆 12小时前 20

godking.customPlus 自绘组件库 · 分析报告

⚙️ godking.customPlus

自绘组件库 · 功能分析报告
v5.9 2026-06-17 aardio GDI+ 自绘

📌 编写初衷 —— 只需定义需要绘制的内容,即可快速实现漂亮的列表/网格效果,无需关心复杂的绘制与交互实现。
基于 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
🌐 网络图片缓存
HTTP 图片自动下载并缓存
🎯 元素级交互
每个元素独立响应 click / hover / check

⚙️ 核心配置表 (config)

参数类型说明
itemWidth / itemHeightnumber项目最小宽高,为0时自动根据行列计算
colnum / rownumnumber列数/行数,为0时根据item尺寸自动计算
autoSizeWidth / autoSizeHeightboolean拉伸项目填满plus宽度/高度
padLeft / padTop / padRight / padBottomnumber项目区域与plus边界的留白
autoFitboolean自动调整plus尺寸以显示全部行列
verticalboolean竖向排列 (行滚动方向变为横向)
bkcolor / bkimg / bkimgmodecolor / path / bitmap / 0-2背景颜色、背景图及平铺模式
singleCheck0 | 1 | 20:多选 / 1:项目内单选 / 2:全局单选
dpinumber强制DPI缩放,0表示自动检测

📄 快速上手 · 代码片段

// 1. 创建 plus 控件 (开启 notify) import godking.customPlus; // 2. 定义项目模板 (itemModel) 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} } }; // 3. 项目数据 (itemList) var data = { { avatar="/res/1.png", title="张三" }, { avatar="/res/2.png", title="李四" } }; // 4. 实例化组件 var p = godking.customPlus(winform.plus, model, data, { colnum=3, rownum=2, itemWidth=100, itemHeight=130, padLeft=10, padTop=10, autoSizeWidth=true }); // 5. 事件绑定 p.onClick = function(itemIndex, eleIndex, eleName) { win.msgbox("点击了 " ++ eleName ++ " 元素"); }; // 6. 导航 & 更新 p.toNextPage(); // 下一页 p.toItem(5); // 跳转到第5项 p.update(itemIndex); // 刷新指定项

🏆 核心优势

🚀 开发效率
配置即界面,数行代码实现复杂列表,无需手写GDI+绘制循环。
🎨 视觉一致性
六态样式体系保证交互反馈统一,支持圆角、阴影、渐变等丰富效果。
🧩 高可扩展性
paint 元素支持完全自定义绘制,可嵌入任意GDI+逻辑,不受限内置类型。
⚡ 性能优化
局部刷新、缩略图、clip剪裁、位图缓存,流畅支持数百项列表。

📌 总结 —— godking.customPlus 是一个为 aardio 开发者打造的高效自绘列表解决方案。

它将复杂的 GDI+ 绘制、鼠标交互、状态管理、布局计算封装在简洁的配置中,让开发者专注于业务数据与视觉创意。
无论是简单的菜单列表,还是包含图片、进度条、自定义绘制的复杂卡片,都可以通过统一的模板机制快速实现。

🔗 配套 godking.paint 库提供丰富的绘图基元,两者结合构成了 aardio 桌面应用界面自绘的强力工具链。

最新回复 (0)
返回