visual Studio 2017 扩展开发(二)《菜单图标详解》
在上一篇我们在菜单栏创建了一个菜单,菜单上显示了一个图标跟文本。那么我们自己创建的菜单如何修改自定义的菜单图标呢。下面娓娓道来。。。。。
首先你要有一个图,创建一个32位的位图。这个位图的像素是16px 16px,或者是16px 16px的倍数。
每个图标都放在单个行中彼此相邻的位图上。使用Alpha通道在每个图标中指示透明的位置。如果使用8位颜色深度,请使用RGB(255,0,255)作为透明度。32位彩色图标是首选。
将图标文件复制到项目的Resources文件夹下。
打开command.png我们看到这个位图里面有六个图标

位图ID的定义方式与其他方法有点不同: 声明从位图条的guid开始,然后存在包含位图的位图条的资源id,在按钮定义中使用元素的数字ids。该声明的一个重要方面是元素id必须是位图条中位图的实际索引;
在CommandPackage.vsct文件的Symbols标签里我们看到,name为guidImages的元素。创建GUID复制到value里。
IDSymbol的name属性是图标的id,value则表示的是条带的位置,如果只有一个图标那么value就是1咯.
<GuidSymbol name="guidImages" value="{2834e3f7-2621-479a-bb6f-e9e48d5f4df4}" >
<IDSymbol name="bmpPic1" value="" />
<IDSymbol name="bmpPic2" value="" />
<IDSymbol name="bmpPicSearch" value="" />
<IDSymbol name="bmpPicX" value="" />
<IDSymbol name="bmpPicArrows" value="" />
<IDSymbol name="bmpPicStrikethrough" value="" />
</GuidSymbol>
文件下的Bitmaps标签下有一个Bitmaps,这个Bitmaps的GUID的值设置为guidImages,创建的GuidSymbol里的name的名称。将href设置为位图的相对路径。usedList就是之前创建的IDSymbol的name,多个就用逗号隔开。
<Bitmap guid="guidImages" href="Resources\Command.png" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows, bmpPicStrikethrough"/>
在<Button>里面有个<Icon> guid就是我们创建的GuidSymbol的name,id则是IDSymbol的name.你要用哪个图标捏,就写上IDSymbol对应name.
<Button guid="guidCommandPackageCmdSet" id="CommandId" priority="0x0100" type="Button">
<Parent guid="guidCommandPackageCmdSet" id="MyMenuGroup" />
<Icon guid="guidImages" id="bmpPicSearch" />
<Strings>
<ButtonText>测试菜单</ButtonText>
</Strings>
</Button>
</Buttons>
运行,在实验示例中我们可以看到自己创建的菜单命令的图标是不是跟你位图上对应的图标。
结果:

本文仅是本人随笔记录,如有疑问欢迎在下面评论。转载请写明出处。如果对你有帮助,动动鼠标有下方给我点个赞。你的支持是我最大的动力。
visual Studio 2017 扩展开发(二)《菜单图标详解》的更多相关文章
- visual Studio 2017 扩展开发(一)《向Visual Studio菜单栏新增一个菜单》
最近有接触到关于visual studio 2017 扩展的开发,特此记录,也是为了督促自己去深入了解其原理. 开始开发Visual Studio 扩展,在这里我安装了visual studio 20 ...
- visual Studio 2017 扩展开发(三)《绑定快捷键到菜单项》
如何将键盘快捷方式映射到自定义按钮,怎么使用快捷键启动自己创建的菜单,刚开始做的时候迷糊了,找了很久.可能也是因为刚开始做不是很明白,后面慢慢就懂了.其实非常简单的. 很多快捷键已经在Visual s ...
- Visual Studio 2017 扩展
Visual Studio 2017 扩展 Visual Studio 2017 15.4.4 : 目前是最新的版本号,所有的工具&插件都支持这个版本号.所以请对号入座. ReSharper ...
- windows下安装QT并与visual studio 2017搭建开发环境
1.环境搭建 这里并不是说qt必须要和visual studio结合使用,不过用习惯了visual studio开发,继续使用可节省开发时间,并大大提供便利性. 关于安装过程这里不再详细赘述,软件下载 ...
- Visual Studio 2017 扩展推荐
ReSharper : 首先的是Resharper,这个基本是目前是我开发过程中必备的工具集,唯一的缺点就是吃内存,所以你的内存要是低于8G,就不要使用它了.它的特点可以快速重构.高亮显示错误.导航和 ...
- Visual Studio的Web Performance Test提取规则详解(3)
总结 Visual Studio的Web Performance Test是基于HTTP协议层的,它不依赖于浏览器,通过直接接收,发送HTTP包来和Web服务器交互.Web Performance T ...
- Visual Studio的Web Performance Test提取规则详解(2)
总结 Visual Studio的Web Performance Test是基于HTTP协议层的,它不依赖于浏览器,通过直接接收,发送HTTP包来和Web服务器交互.Web Performance T ...
- Visual Studio的Web Performance Test提取规则详解(1)
总结 Visual Studio的Web Performance Test是基于HTTP协议层的,它不依赖于浏览器,通过直接接收,发送HTTP包来和Web服务器交互.Web Performance T ...
- Visual Studio 2017 ASP.NET Core开发
Visual Studio 2017 ASP.NET Core开发,Visual Studio 2017 已经内置ASP.NET Core 开发工具. 在选择.NET Core 功能安装以后就可以进行 ...
随机推荐
- 基于xposed实现android注册系统服务,解决跨进程共享数据问题
昨花了点时间,参考github issues 总算实现了基于xposed的系统服务注入,本文目的是为了“解决应用之间hook后数据共享,任意app ServiceManager.getService就 ...
- pl/sql调试存储过程
1.找到对应的存储过程 2.在存储过程名称上右键,选择Test 3.点击1标识的按钮(begin debugger),选择2开始调试 4.存储过程如需参数,需要在右侧下方的表格区域(3)填入对应的值即 ...
- PostgreSQL uuid
--执行一 create extension "uuid-ossp" --执行二 select uuid_generate_v4()
- css响应式
<meta name="viewport" content="width=devicw-width,initial-scale=1.0"> 响应式图 ...
- Code First的实体继承模式
Entity Framework的Code First模式有三种实体继承模式 1.Table per Type (TPT)继承 2.Table per Class Hierarchy(TPH)继承 3 ...
- SAS 创建新变量
SAS 创建新变量 在对SAS数据集进行处理时,经常需要根据原有变量或变量值生成新变量.根据要实现功能的不同,SAS提供了多种方法,例如通过数据集选项RENAME=(RENAME语句).赋值语句.求 ...
- python中3个连续的单引号是什么意思?''' ... ''' 这样的引号是什么意思?
- 复习支持向量机(SVM)没空看书时,掌握下面的知识就够了
支持向量机(support vector machines, SVM)是一种二类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器:支持向量机还包括核技巧,这使它成为实质上的非线性分类器. ...
- wcf生成客户端代理类步骤及语句
通过svcutil.exe工具生成客户端代理类和客户端的配置文件 .在运行中输入cmd打开命令行 ()cd C:\Program Files (x86)\Microsoft SDKs\Windows\ ...
- 为创世纪图书馆(Library Genesis)作镜像
简介 Library Genesis的Wikipedia条目中的介绍是: Library Genesis or LibGen is a search engine for articles and b ...