#if defined(__WXMSW__)
    #ifdef wxHAVE_RAW_BITMAP
    #include "wx/rawbmp.h"
    #endif
#endif

#if defined(__WXMAC__) || defined(__WXGTK__)
    #define wxHAVE_RAW_BITMAP
    #include "wx/rawbmp.h"
#endif



////Event Table Start
BEGIN_EVENT_TABLE(prjWxEx01Frm,wxFrame)
    ////Manual Code Start
    ////Manual Code End
    
    EVT_PAINT(prjWxEx01Frm::OnPaint)

END_EVENT_TABLE()
////Event Table End


bool MainApp::OnInit()
{
    wxInitAllImageHandlers();
}

void prjWxEx01Frm::drawImage(wxDC* dc)
{
    dc->SetBrush( wxBrush( wxT("orange"), wxSOLID ) );
    dc->SetPen( *wxBLACK_PEN );
    dc->DrawRectangle( 5, 30, 110, 100 );
    
    if(m_bitmap.Ok())
    {
        wxRect rect;
        rect.SetWidth(m_bitmap.GetWidth());
        rect.SetHeight(m_bitmap.GetHeight());

        dc->DrawBitmap(m_bitmap.GetSubBitmap(rect), 10, 35, -1);
    }
}


/*
 * WxBtnNextClick
 */
void prjWxEx01Frm::WxBtnNextClick(wxCommandEvent& event)
{

    //===============
    wxDir wdir(wxGetCwd());

    wxString dir;
    if ( wxFile::Exists(wxT("./Images/crouch.jpg")) ){
        dir = wxT("./Images/");
    }
    else if ( wxFile::Exists(wxT("../../Images/crouch.jpg")) ){
        dir = wxT("../../Images/");
    }

    wxImage image( dir + _T("crouch.jpg" ), wxBITMAP_TYPE_JPEG);
    m_bitmap = wxBitmap( image );
    image.Destroy();


    wxClientDC* clientDC = new wxClientDC(this);
    drawImage(clientDC);
    if (clientDC) delete clientDC;
}


void prjWxEx01Frm::OnPaint(wxPaintEvent& WXUNUSED(event))
{
    wxPaintDC dc( this );
    PrepareDC( dc );
    
    drawImage(&dc);

}
Posted by stekilove
,