如何在VC++下实现高彩色工具条?
由于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)