01: #include <wx/wx.h>
02: 
03: /**
04:    A window onto which an ellipse is painted.
05: */
06: class EllipseWindow : public wxWindow
07: {
08: public:
09:    /**
10:       Initializes the base class.
11:       @param parent the parent window
12:    */
13:    EllipseWindow(wxWindow* parent);
14:    /**
15:       Draws an ellipse on the window.
16:       @param event the event descriptor
17:    */
18:    void OnPaint(wxPaintEvent& event);
19: private:
20:    DECLARE_EVENT_TABLE()
21: };
22: 
23: /**
24:    A frame with a window that shows an ellipse.
25: */
26: class PaintFrame : public wxFrame
27: {
28: public:
29:    /**
30:       Constructs the window.
31:    */
32:    PaintFrame();
33: private:
34:    EllipseWindow* window;
35: };
36: 
37: /**
38:    An application to demonstrate painting.
39: */
40: class PaintApp : public wxApp
41: {
42: public:
43:    /**
44:       Constructs the frame.
45:    */
46:    PaintApp();
47:    /**
48:       Shows the frame.
49:       @return true
50:    */
51:    virtual bool OnInit();
52: private:
53:    PaintFrame* frame;
54: };
55: 
56: DECLARE_APP(PaintApp)
57: 
58: IMPLEMENT_APP(PaintApp)
59: 
60: BEGIN_EVENT_TABLE(EllipseWindow, wxWindow)
61:    EVT_PAINT(EllipseWindow::OnPaint)
62: END_EVENT_TABLE()
63: 
64: EllipseWindow::EllipseWindow(wxWindow* parent)
65:    : wxWindow(parent, -1)
66: {
67: }
68: 
69: void EllipseWindow::OnPaint(wxPaintEvent& event)
70: {
71:    wxPaintDC dc(this);
72:    dc.SetBrush(*wxTRANSPARENT_BRUSH);
73:    wxSize size = GetSize();
74:    int x = 0;
75:    int y = 0;
76:    int width = size.GetWidth();
77:    int height = size.GetHeight();
78:    dc.DrawEllipse(x, y, width, height);
79: }
80: 
81: PaintFrame::PaintFrame() 
82:    : wxFrame(NULL, -1, "PaintFrame")
83: {
84:    window = new EllipseWindow(this);
85: }
86: 
87: PaintApp::PaintApp()
88: {
89:    frame = new PaintFrame();
90: }
91: 
92: bool PaintApp::OnInit()
93: {
94:    frame->Show(true);
95:    return true;
96: }
97: