添加我自己的图标wxAuiToolBar

问题描述:

我想添加一个按钮到wxAuiToolBar,显示我自己创建的图标(我把它作为文件myicon.png与分辨率24x24)。添加我自己的图标wxAuiToolBar

我manged到目前为止是转换为bmp文件和使用wxsmith下面的代码最好:

<wxsmith> 
    <object class="wxFrame" name="MyFrame"> 
     <size>800,640</size> 
     <object class="wxAuiManager" variable="aui_manager" member="yes"> 
      <object class="AuiManagerItem"> 
       <object class="wxAuiToolBar" name="ID_AUITOOLBAR" variable="toolbar" member="yes"> 
        <pos>90,3</pos> 
        <object class="AuiToolBarItem"> 
         <object class="wxAuiToolBarItem" name="ID_AUITOOLBARMEASURE" variable="AuiToolBarMeasure" member="yes"> 
          <bitmap>/home/username/project/icon.bmp</bitmap> 
          <handler function="OnTest" entry="EVT_TOOL" /> 
         </object> 
         <label>Test</label> 
        </object> 
       </object> 
      </object> 
     </object> 
    </object> 
</wxsmith> 

通往下面的源代码:

toolbar->AddTool(ID_AUITOOLBAR1, _("Test"), 
    wxBitmap(wxImage(_T("/home/username/project/icon.bmp"))), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL); 

然而透明度信息丢失了。如果我使用png文件或转换为xpm,然后我得到一个运行时错误:“../src/gtk/bitmap.cpp(626):断言”image.IsOk()“在wxBitmap()失败, :无效的图片”

目前,我想要得到它与WxSmith的工作,但如果证明不是有可能我也很高兴,如果有人能帮助我得到它的工作没有。

+0

如果你有auidemo样品试试这一点? – Igor

为了在运行时,你需要注册PNG图像处理器可与wxInitAllImageHandlers()完成加载PNG文件。而且您应该实际检查位图创建是否成功,因为始终可能找不到或损坏文件。

或者,您也可以在程序中直接嵌入PNG,然后使用便捷wxBITMAP_PNG() macro加载它。在这种情况下,您通常可以省略错误处理。

+0

而得到它的同WxSmith工作,我改变了''进入''。我也想提一下,在我看来,当我使用'wxBITMAP_PNG()'时,我仍然需要调用'wxInitAllImageHandlers()'(至少在我的linux平台上)。 – matec