    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: