MFC实现256色工具栏图标及工具栏提示信息

MFC中,ToolBar上的button绘制图标,默认只支持16色,如果从Icon资源将超过16色的bmp拷贝到ToolBar的button上会出现颜色失真,网上有使用CImageList实现256色工具栏图标的方法,我只是简单地看了看,没有去实现,这里介绍另外一种简单的实现256色工具栏图标的方法:

首先,在设计工具栏按钮功能的时候,我们可以先忽略button的图标,可以先在button上写上文字或者随意画点东西,只要能让自己识别这个button就行;

然后,在编译之后,在工程对应的资源文件夹下面,会有刚才建立的工具栏对应的长条形的bmp,我们假设生成的是view.bmp,这个bmp图片最多只包含了16色;

最后,我们将自己的256色的长条形的bmp拷贝到view.bmp所在的资源文件夹下面,删除原来的view.bmp,将刚才拷贝进来的256色的bmp名字改为view.bmp就大功告成了.

(由于我们的图标都是16*16或者32*32的单个小图标,而前面提到的是将一系列小图标组成的长条形的图标,怎么实现呢?如果你会PS,可以用这个实现,这里给推荐一个小工具MergePic,下载地址)


记得先clean solution,再build solution,再运行,这样就能看到256色的工具栏图标了


关于工具栏button,当鼠标经过时,如果要显示提示信息,可以在button的属性的Prompt尽心设置,例如"\n打开"或者“打开已存在的文件\n打开”,至于这两种写法的区别,可以自己试试看看效果。


这里还有个问题有待解决:怎么将工具栏button上的bmp图片背景设置为透明


8月18日补充

前面留下了两个问题没能顺利解决:

1.工具栏使用32*32的图标,而工具栏对应的菜单项前面的图标显然小于32*32,而当MFC自动关联ID相同的菜单项和工具栏按钮时,会将工具栏上的图标绘制到菜单项前面,当我们使用颜色深度为32位的bmp时,由于工具栏按钮图标大于菜单项需求图标尺寸,会导致菜单项前面的图标显示不完整

解决方案:将工具栏图标保存为24位的bmp,这样MFC能自动将工具栏图标缩小后显示在菜单项前面。这里我用画图工具将bmp另存为24位位图之后,在图片的属性查看位图信息时,仍然显示是32位的,一开始没注意这个问题,耽误了不少时间,后来我先将32位位图保存为png格式,再将png另存为24位bmp,问题解决了;


2.使用1中生成的bmp,显示在软件界面,会发现背景是白色的,看上去不自然,而MFC框架自动生成的"打开、保存“工具栏的背景确是透明的,怎么实现类似的效果呢?

解决方案:利用QQ截屏时显示像素值的功能查看了下MFC自带工具条图标的背景色,也就是常见的那种灰色,RGB值为192,192,192,于是我将图标所有的白色背景利用画图工具改成了RGB(192,192,192),然后重新调试,编译,背景也透明了(估计MFC将RGB(192,192,192)设置为了透明色,猜想


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值