2017-05-11 6 views
0

wxAuiToolBar에 자신이 만든 아이콘이 표시된 단추를 추가하고 싶습니다.이 파일은 해상도가 24x24 인 myicon.png입니다.wxAuiToolBar에 대한 내 자신의 아이콘 추가

지금까지 manged했던 파일을 BMP 및 wxsmith에 대한 다음 코드를 사용하도록 변환하는 것입니다 가장 좋은 그러나 투명도 정보가

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

:

<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> 

다음과 같은 소스 코드로 선도를 분실되었다.

png 파일을 사용하거나 xpm으로 변환하면 런타임 오류가 발생합니다. "../src/gtk/bitmap.cpp(626) : wxBitmap()에서"image.IsOk() "오류가 발생했습니다. : 유효하지 않은 이미지 "

현재 WxSmith와 함께 작동 시키려고 노력하고 있습니다.하지만 가능하지 않은 것으로 밝혀지면 아무에게도 도움이 될 수 있으면 기쁠 것입니다.

+0

auidemo 샘플로 시도하면 어떻게됩니까? – Igor

답변

0

런타임 중에 PNG 파일을로드하려면 wxInitAllImageHandlers()으로 수행 할 수있는 PNG 이미지 처리기를 등록해야합니다. 또한 파일을 찾지 못하거나 손상되었을 가능성이 항상 있기 때문에 비트 맵 만들기가 성공했는지 실제로 확인해야합니다.

또는 PNG를 프로그램에 직접 포함시킨 다음 편리한 wxBITMAP_PNG() macro을 사용하여로드 할 수 있습니다. 이 경우 일반적으로 오류 처리를 생략 할 수 있습니다.

+0

WxSmith와 함께 작동 시키려면''항목을''으로 변경했습니다. 또한'wxBITMAP_PNG()'를 사용할 때 (적어도 리눅스 플랫폼에서는)'wxInitAllImageHandlers()'를 호출 할 필요가 있다는 것을 언급하고 싶습니다. – matec