#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("Приклад 4"), // заголовок вікна wxPoint(50,50), // верхній лівий кут wxSize(360,300)); // розміри вікна 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) { wxPoint lines[] = // вершини ламаної Z {wxPoint( 20,210),wxPoint(100,210), wxPoint( 20,260),wxPoint(100,260)}; wxPoint polygon[] = // вершини 5-кутника {wxPoint(140,140),wxPoint(180,170), wxPoint(180,140),wxPoint(220,110), wxPoint(140,110)}; // опорні точки сплайну зглаженої ламаної wxPoint splines[] = {wxPoint(240,170),wxPoint(280,170), wxPoint(285,110),wxPoint(325,110)}; dc.DrawEllipse(20, 20, // координати ВЛК 80, 60); // розміри еліпса dc.DrawRoundedRectangle( 130, 20, // координати ВЛК 80, 60, // розміри 10); // радіус заокруглення кутів dc.DrawArc( // дуга кола 240, 40, // координати початку дуги 340, 40, // координати кінця дуги 290, 20);// центр відповідного кола // рух дугою - у напрямку, протилежному // до руху годинникової стрілки dc.DrawRectangle(20,110,80,60); dc.DrawPolygon(5,polygon); // 5-кутник dc.DrawSpline(4,splines); // сплайн dc.DrawLines(4, lines); // ламана Z dc.DrawCircle(170, 230, 35); // коло dc.DrawEllipticArc( // дуга еліпса 240,195,// координати ВЛК прямокутника 100, 60,// розміри описаного прямокутника 270,180);// кутові координати кінців дуги }