#include "wx/wx.h" #include "wx/sizer.h" class BasicDrawPane : public wxPanel { public: BasicDrawPane(wxFrame* parent); void paintEvent(wxPaintEvent & evt); void paintNow(); void render(wxDC& dc); DECLARE_EVENT_TABLE() }; class MyApp: public wxApp { bool OnInit(); wxFrame *frame; BasicDrawPane * drawPane; public: }; IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); frame = new wxFrame((wxFrame *)NULL, -1, wxT("Приклад 6"),// заголовок вікна wxPoint(50,50), // верхній лівий кут wxSize(260,420));// розміри вікна drawPane = new BasicDrawPane( (wxFrame*) frame ); sizer->Add(drawPane, 1, wxEXPAND); frame->SetSizer(sizer); frame->SetAutoLayout(true); frame->Show(); return true; } BEGIN_EVENT_TABLE(BasicDrawPane, wxPanel) // перехлення події малювання EVT_PAINT(BasicDrawPane::paintEvent) END_EVENT_TABLE() BasicDrawPane:: BasicDrawPane(wxFrame* parent) : wxPanel(parent) {} void BasicDrawPane:: paintEvent(wxPaintEvent & evt) { wxPaintDC dc(this); render(dc); } void BasicDrawPane::paintNow() { wxClientDC dc(this); render(dc); } void BasicDrawPane::render(wxDC& dc) { // задати білий колір тла dc.SetBackground(*wxWHITE_BRUSH); // очистити: отримати тло білого кольору, // а не сірого - передбаченого dc.Clear();// налаштуваннями ОС dc.DrawBitmap(wxBitmap(// зображення wxT("10.jpeg"), // фото шпака wxBITMAP_TYPE_JPEG),// тип 10, 10, // координати ВЛК true); // виділення пам'яті для зображення wxBitmap bitmap(236, 180); wxMemoryDC memDC; memDC.SelectObject(bitmap); memDC.Blit(0, 0, 236, 180,& dc, 10, 10); memDC.SelectObject(wxNullBitmap); //конвертація для можливості опрацювання wxImage img = bitmap.ConvertToImage(); //поточкове опрацювання й виведення for (int j=0; j<236; j++) for (int k=0; k<180; k++) { dc.SetPen(wxPen(wxColor( img.GetRed(j,k), img.GetGreen(j,k), img.GetBlue(j,k)),1)); dc.DrawPoint(10+j,380-k); } }