#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("Приклад 2"), // заголовок вікна wxPoint(50,50), // верхній лівий кут wxSize(220,180)); // розміри вікна 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.SetBrush(*wxTRANSPARENT_BRUSH); dc.SetPen(wxPen(wxColor(0,0,0), 2, wxPENSTYLE_SOLID)); dc.DrawRectangle(10, 10, 60, 60); dc.SetPen(wxPen(wxColor(0,0,0), 2, wxPENSTYLE_DOT)); dc.DrawRectangle(80, 10, 60, 60); dc.SetPen(wxPen(wxColor(0,0,0), 2, wxPENSTYLE_LONG_DASH)); dc.DrawRectangle(150, 10, 60, 60); dc.SetPen(wxPen(wxColor(0,0,0), 2, wxPENSTYLE_SHORT_DASH)); dc.DrawRectangle(10, 80, 60, 60); dc.SetPen(wxPen(wxColor(0,0,0), 2, wxPENSTYLE_DOT_DASH)); dc.DrawRectangle(80, 80, 60, 60); dc.SetPen(wxPen(wxColor(0,0,0), 2, wxPENSTYLE_TRANSPARENT)); dc.DrawRectangle(150, 80, 60, 60); }