如何在VC++下实现高彩色工具条?

eric007 2004-08-11 04:37:26
由于VC限制工具栏上的图标不能超出16色,因此不论是在资源视图直接编辑位图还是用复制粘贴等手段均无法获取超出256色的工具条。
后来看到过一篇解决此类问题的文章,大致内容如下:
由于工具条在显示时有并不直接从Toolbar获取图标而是从图像列表中读取,因此可以通过其他一些图像处理软件做好类似于工具条的bmp图像,并以位图的形式加入到程序资源。在使用时,先将其读取到图像列表,这样图像列表中用于显示到工具条上的图标的颜色就可以是256、24位、甚至32位色的了。 用图像处理软件绘制工具条位图,控制好图像的尺寸,如需要有N个边长为 M的图标,那么需要绘制的位图尺寸为长=N*M;宽=M。
准备工作就绪后,用::LoadImage()函数去加载工具条位图,并通过宏MAKEINTRESOURCE()来指定具体要加载哪一个资源位图:

HBITMAP hbm = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
  MAKEINTRESOURCE(IDB_TOOLBAR), //加载IDB_TOOLBAR
  IMAGE_BITMAP, //按位图格式
  0,0, // cx,cy
  LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS );

/*LoadImage返回一个位图句柄HBITMAP,但在MFC下使用CBitmaps会更加方便,可创建一个CBitmap对象并用Attach()成员函数将它与位图句柄联系起来:*/

CBitmap bm;
  bm.Attach(hbm);
m_ilToolBar.Create(32,32,ILC_COLOR8, 4, 4);//ILC_COLOR8标明了创建的图像列表是256色
  m_ilToolBar.Add(&bm,(CBitmap*)NULL);

/*最后一步,也是最关键的一步,必须通过SetImageList()函数指定工具条m_wndToolBar的图标来源不再是原来缺省的图像列表而是含有高彩色位图的图像列表m_ilToolBar:*/

m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ilToolBar);

请问有经验的高手:是通过什么图像处理软件做出类似于工具条的bmp图像?(并能控制好图像的尺寸,如需要有N个边长为 M的图标,那么需要绘制的位图尺寸为长=N*M;宽=M)



...全文
238 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
eric007 2004-08-12
  • 打赏
  • 举报
回复
一步步制作真彩工具条里说的就是用visual toolbar 软件来做工具条阿,这软件不是免费的!
kvw3000 2004-08-11
  • 打赏
  • 举报
回复
一步步制作真彩工具条

http://www.vckbase.com/document/viewdoc/?id=1069
eric007 2004-08-11
  • 打赏
  • 举报
回复
用potoshop麻烦点了吧,刚搜到一个软件Visual Toolbar ,可是得注册才行,:(
http://act.it.sohu.com/download/show-20407.html

哪位有注册码啊?
思危 2004-08-11
  • 打赏
  • 举报
回复
我用Phtoshop
lixia0san 2004-08-11
  • 打赏
  • 举报
回复
http://www.codeguru.com/Cpp/controls/toolbar/article.php/c2537/
flyelf 2004-08-11
  • 打赏
  • 举报
回复
photoshop

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧