创建了一个toolbar,设置了一个imagelist,在imagelist中放了几个icon,然后在toolbar上添加了几个button使用TB_INSERTBUTTON,因为我的imagelist里icon不是方形的,在button旁边显示总是会有一块背景。请问
这个背景能变成透明的嘛?icon本身的背景就是透明的,在listview等控件里就是透明的。

解决方案 »

  1.   

    在资源管理器中这些icon看上去就是透明的。可是在toolbar的Button上显示就不行。有方法能解决嘛?
      

  2.   

    用IconWorkshop把透明icon转换成带背景色为toobar颜色(一般就是windows经典灰色)的bmp。。
    再用imagelist添加bmp吧。。
    在delphi中,直接添加透明图标是不会出现难看的背景问题的,在VC中的没试过。。
      

  3.   

    下面是一段我添加高彩色工具条的代码
    //高彩色工具条
    CBitmap bmp;
    bmp.LoadBitmap( IDB_SKINTB );
    m_ImageList.Create( 16, 16, ILC_COLOR24 | ILC_MASK, 17, 0 );
    m_ImageList.Add( &bmp, RGB(218,224, 242) );
    bmp.DeleteObject(); bmp.LoadBitmap( IDB_SKINGRAYTB );
    m_DisableImgLst.Create( 16, 16, ILC_COLOR24 | ILC_MASK, 17, 0 );
    m_DisableImgLst.Add( &bmp, RGB(218,224, 242) );
    bmp.DeleteObject(); CToolBarCtrl& ctrl = m_wndToolBar.GetToolBarCtrl();
    ctrl.SetImageList( &m_ImageList );
    ctrl.SetDisabledImageList( &m_DisableImgLst );
      

  4.   

    下面是一段我添加高彩色工具条的代码
    CImageList m_ImageList, m_DisableImgLst;
    //高彩色工具条
    CBitmap bmp;
    bmp.LoadBitmap( IDB_SKINTB );
    m_ImageList.Create( 16, 16, ILC_COLOR24 | ILC_MASK, 17, 0 );
    m_ImageList.Add( &bmp, RGB(218,224, 242) );
    bmp.DeleteObject(); bmp.LoadBitmap( IDB_SKINGRAYTB );
    m_DisableImgLst.Create( 16, 16, ILC_COLOR24 | ILC_MASK, 17, 0 );
    m_DisableImgLst.Add( &bmp, RGB(218,224, 242) );
    bmp.DeleteObject(); CToolBarCtrl& ctrl = m_wndToolBar.GetToolBarCtrl();
    ctrl.SetImageList( &m_ImageList );
    ctrl.SetDisabledImageList( &m_DisableImgLst );
    RGB(218,224, 242)是我加入的位图的背景色。这样加入的图片背景是透明的。我想你可以在加入一个按钮时,获得工具条的CImageList*,然后添加位图时背景设置成要加入的位图的背景(加入Icon后背景会变成什么颜色我就不知道了)。你试试看吧,希望对你有帮助。