为 wxAuiToolBar 添加我自己的图标
Adding my own Icon for wxAuiToolBar
我想向 wxAuiToolBar
添加一个按钮,显示我自己创建的图标(我将其作为文件 myicon.png
,分辨率为 24x24)。
到目前为止,我最好的办法是转换为 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): assert "image.IsOk()" failed in wxBitmap(): invalid图片
目前我正在尝试让它与 WxSmith 一起工作,但如果事实证明这是不可能的,如果有人能帮助我让它在没有 WxSmith 的情况下工作,我也会很高兴。
为了在 运行 期间加载 PNG 文件,您需要注册 PNG 图像处理程序,这可以通过 wxInitAllImageHandlers() 完成。而且您仍然应该实际检查位图创建是否成功,因为总是有可能找不到文件或文件已损坏。
或者,您可以直接在程序中嵌入 PNG,然后使用方便的 wxBITMAP_PNG() macro 加载它。在这种情况下,您通常可以省略错误处理。
我想向 wxAuiToolBar
添加一个按钮,显示我自己创建的图标(我将其作为文件 myicon.png
,分辨率为 24x24)。
到目前为止,我最好的办法是转换为 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): assert "image.IsOk()" failed in wxBitmap(): invalid图片
目前我正在尝试让它与 WxSmith 一起工作,但如果事实证明这是不可能的,如果有人能帮助我让它在没有 WxSmith 的情况下工作,我也会很高兴。
为了在 运行 期间加载 PNG 文件,您需要注册 PNG 图像处理程序,这可以通过 wxInitAllImageHandlers() 完成。而且您仍然应该实际检查位图创建是否成功,因为总是有可能找不到文件或文件已损坏。
或者,您可以直接在程序中嵌入 PNG,然后使用方便的 wxBITMAP_PNG() macro 加载它。在这种情况下,您通常可以省略错误处理。