图标尺寸与格式要求
SolidWorks 支持为高分辨率屏幕提供多尺寸图标,ICommandGroup.IconList 属性支持的尺寸包括:20×20、32×32、40×40、64×64、96×96、128×128 像素。每个尺寸的图标文件应包含该尺寸下所有按钮和分隔符的图片,且使用 256 色调色板。
图标文件支持 PNG 和 BMP 格式,推荐使用带 Alpha 通道的 PNG 以获得更好的透明效果。
核心图标属性
ICommandGroup 接口提供两组关键图标属性:
| 属性 | 用途 | 说明 |
|---|---|---|
IconList | 工具栏按钮和分隔符的图标 | 新版 API,支持多尺寸数组,取代旧的 SmallIconList/LargeIconList |
MainIconList | 命令组主按钮的图标 | 用于工具栏上命令组按钮本身显示,尺寸顺序必须与 IconList 一致 |
图标索引与命令按钮的关联
在 AddCommandItem2 中添加命令时,ImageListIndex 参数用于指定该命令在图标列表中的索引位置。该索引是 0-based 的,即 0 对应图标列表中的第一张图片。
// 图标列表数组中,索引0对应第一张图标,索引1对应第二张,以此类推
int idx1 = cmdGroup.AddCommandItem2("Cmd1", -1, "Export Data to STP", "To STP", 0, "OnCommand1", "EnableCommand1", 0, menuToolbarOption); // 使用第一张图标
int idx2 = cmdGroup.AddCommandItem2("Cmd2", -1, "Export Data to IGS", "To IGS", 1, "OnCommand2", "EnableCommand2", 1, menuToolbarOption); // 使用第二张图标
使用 BitmapHandler 从资源中提取图标
BitmapHandler 是 SolidWorksTools 提供的工具类,用于将嵌入到程序集中的图片资源提取为临时文件,并返回文件路径供 SolidWorks 使用。
基本用法:
BitmapHandler bh = new BitmapHandler();
Assembly thisAssembly = Assembly.GetExecutingAssembly();
string iconPath = bh.CreateFileFromResourceBitmap("MainAddin.Icons.Cmd-icon-20.png", thisAssembly);
资源名称格式为 {命名空间}.{文件夹}.{文件名},例如项目命名空间为 MainAddin,图标放在 Icons 文件夹下,文件名为 Cmd-icon-20.png,则资源名为 "MainAddin.Icons.Cmd-icon-20.png"。
完整代码示例
设置多尺寸图标列表
// 创建命令图标索引数组(6种尺寸,顺序必须一致)
BitmapHandler bh = new BitmapHandler();
Assembly thisAssembly = Assembly.GetExecutingAssembly();
string[] icons = new string[6];
icons[0] = bh.CreateFileFromResourceBitmap("MainAddin.Icons.Cmd-icon-20.png", thisAssembly); // 20x20
icons[1] = bh.CreateFileFromResourceBitmap("MainAddin.Icons.Cmd-icon-32.png", thisAssembly); // 32x32
icons[2] = bh.CreateFileFromResourceBitmap("MainAddin.Icons.Cmd-icon-40.png", thisAssembly); // 40x40
icons[3] = bh.CreateFileFromResourceBitmap("MainAddin.Icons.Cmd-icon-64.png", thisAssembly); // 64x64
icons[4] = bh.CreateFileFromResourceBitmap("MainAddin.Icons.Cmd-icon-96.png", thisAssembly); // 96x96
icons[5] = bh.CreateFileFromResourceBitmap("MainAddin.Icons.Cmd-icon-128.png", thisAssembly); // 128x128
cmdGroup.IconList = icons;
添加命令时指定图标索引
// MainIconList 的尺寸顺序必须与 IconList 完全一致
string[] mainIcons = new string[6];
mainIcons[0] = bh.CreateFileFromResourceBitmap("MainAddin.Icons.Main-icon-20.png", thisAssembly);
mainIcons[1] = bh.CreateFileFromResourceBitmap("MainAddin.Icons.Main-icon-32.png", thisAssembly);
mainIcons[2] = bh.CreateFileFromResourceBitmap("MainAddin.Icons.Main-icon-40.png", thisAssembly);
mainIcons[3] = bh.CreateFileFromResourceBitmap("MainAddin.Icons.Main-icon-64.png", thisAssembly);
mainIcons[4] = bh.CreateFileFromResourceBitmap("MainAddin.Icons.Main-icon-96.png", thisAssembly);
mainIcons[5] = bh.CreateFileFromResourceBitmap("MainAddin.Icons.Main-icon-128.png", thisAssembly);
cmdGroup.MainIconList = mainIcons;
图标文件的项目配置
- 将图标文件添加到项目:在 Visual Studio 中,将 PNG 文件放入
Icons文件夹。 - 设置生成操作:将每个图标文件的 “生成操作”(Build Action) 设置为 “嵌入的资源”(Embedded Resource),确保图标被打包进 DLL。
- 设置复制行为:也可将图标设置为 “内容”(Content) 并选择 “如果较新则复制”,使图标文件随 DLL 一起输出到调试目录。