2017-05-11 52 views
0

我想添加一個按鈕到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

回答

0

爲了在運行時,你需要註冊PNG圖像處理器可與wxInitAllImageHandlers()完成加載PNG文件。而且您應該實際檢查位圖創建是否成功,因爲始終可能找不到或損壞文件。

或者,您也可以在程序中直接嵌入PNG,然後使用便捷wxBITMAP_PNG() macro加載它。在這種情況下,您通常可以省略錯誤處理。

+0

而得到它的同WxSmith工作,我改變了''進入'<位圖碼= 「wxBITMAP_PNG(圖標)」/>'。我也想提一下,在我看來,當我使用'wxBITMAP_PNG()'時,我仍然需要調用'wxInitAllImageHandlers()'(至少在我的linux平臺上)。 – matec

相關問題