用aardio的customPlus库,5分钟搞定一个带交互的图标菜单(附完整源码)

张开发
2026/4/20 0:04:44 15 分钟阅读

分享文章

用aardio的customPlus库,5分钟搞定一个带交互的图标菜单(附完整源码)
用aardio的customPlus库5分钟打造动态图标菜单在桌面应用开发中一个直观美观的导航菜单往往能大幅提升用户体验。aardio作为轻量级Windows桌面开发工具通过customPlus库让开发者无需深入GDI绘图细节就能快速实现专业级的自绘UI组件。本文将手把手教你用5分钟构建一个支持悬停高亮、点击反馈的现代化图标菜单。1. 环境准备与基础配置首先确保已下载最新版aardio开发环境当前版本35.72。customPlus库需要配合paint库使用将两个库文件放入lib/godking/目录lib/ └── godking/ ├── customPlus.aardio └── paint.aardio基础窗体创建只需几行代码import win.ui; var winform win.form(text图标菜单演示; right400; bottom600) winform.add( plus{clsplus; left20; top20; right380; bottom580; z1} ) winform.show()关键配置参数说明参数类型说明示例值itemWidth数值项目基准宽度300itemHeight数值项目基准高度80autoSizeCol布尔自动适应列宽truecolnum数值固定列数12. 菜单项模板设计通过itemModel定义每个菜单项的可视元素我们采用三层结构背景层圆角矩形底色图标层FontAwesome矢量图标文本层菜单标题文字itemModel { { // 背景层 typerect, round8, rectf{x0; y0; width0; height0}, fillcolor0xFFF5F5F5, itemhoveredfillcolor0xFFE3F2FD, itemselectedfillcolor0xFFBBDEFB }, { // 图标层 nameicon, typetext, rectf{x20; y20; width40; height40}, font{nameFontAwesome; point24; color0xFF2196F3}, itemhoveredfont{color0xFF0D47A1} }, { // 文本层 nametitle, typetext, rectf{x80; y25; width-20; height30}, font{name微软雅黑; point14; color0xFF424242}, itemhoveredfont{color0xFF212121} } }状态交互逻辑优先级从高到低禁用状态disabledXXX选中状态checkedXXX元素悬停hoveredXXX项目选中itemselectedXXX项目悬停itemhoveredXXX默认状态3. 动态菜单数据绑定利用FontAwesome的600免费图标我们可以轻松创建专业级菜单import fonts.fontAwesome itemList [ { icon\uF015, // 首页图标 title控制面板 }, { icon\uF1C0, // 数据库图标 title数据管理, disabledtrue // 禁用状态示例 }, { icon\uF013, // 齿轮图标 title系统设置 }, { icon\uF2B9, // 用户图标 title账户中心 } ]图标编码参考功能Unicode图标首页\uF015⌂设置\uF013⚙用户\uF2B94. 交互事件处理为菜单添加点击响应和动态更新能力var p godking.customPlus(winform.plus, itemModel, itemList, { itemWidth360, itemHeight80, colnum1, autoSizeColtrue }) p.onClick function(itemIndex, elemIndex, elemID, elemName) { if(itemList[itemIndex].disabled) return // 取消之前选中项 for(i1; #itemList; 1){ if itemList[i].checked { itemList[i].checked false p.update(i) } } // 设置当前选中项 itemList[itemIndex].checked true p.update(itemIndex) // 实际业务处理 winform.text 已选择 itemList[itemIndex].title } // 动态添加菜单项 winform.add( btnAdd{clsbutton; text添加项; left150; top550; right250; bottom580; z2} ) winform.btnAdd.oncommand function(id, event) { table.push(itemList, { icon\uF067, // 加号图标 title新增功能 }) p.update() }5. 高级效果优化通过自定义绘制实现更复杂的视觉效果// 在itemModel中添加进度条元素 { nameprogress, typerect, rectf{x20; y65; width-20; height3}, progressdirectionleft, progresscolor0xFF4CAF50 } // 动态更新进度值 itemList[2].progress 0.7 // 70%进度 p.update(2)响应式布局技巧使用autoSizeWidth/Height自动适应容器尺寸通过padLeft等参数控制边距colnum和rownum控制行列布局最终效果特点矢量图标支持高清显示六种状态视觉反馈平滑的悬停动画效果完整的点击事件处理动态增删菜单项无障碍访问支持开发过程中发现将图标字体与状态管理结合能极大减少图片资源依赖。实际项目中建议将itemModel封装为独立模块方便复用。

更多文章