From: Vadim Zeitlin Date: Sun, 20 Mar 2011 22:33:25 +0000 (+0000) Subject: Added a simple example of semi-transparent window to the erase sample. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/ab4387390c23f4c6e2d854ffed2b8a2ab572c40b Added a simple example of semi-transparent window to the erase sample. Show how to create a custom control with transparent background. Notice that this doesn't work in wxGTK currently. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/samples/erase/erase.cpp b/samples/erase/erase.cpp index 554c989f2a..138b3fa2bc 100644 --- a/samples/erase/erase.cpp +++ b/samples/erase/erase.cpp @@ -139,6 +139,34 @@ private: DECLARE_EVENT_TABLE() }; +class ControlWithTransparency : public wxWindow +{ +public: + ControlWithTransparency(wxWindow *parent, + const wxPoint& pos, + const wxSize& size) + : wxWindow(parent, wxID_ANY, pos, size, wxBORDER_NONE) + { + Connect(wxEVT_PAINT, + wxPaintEventHandler(ControlWithTransparency::OnPaint)); + } + + virtual bool HasTransparentBackground() { return true; } + +private: + void OnPaint( wxPaintEvent& WXUNUSED(event) ) + { + wxPaintDC dc(this); + + dc.SetPen(*wxRED_PEN); + dc.SetBrush(*wxTRANSPARENT_BRUSH); + dc.DrawRectangle(GetClientSize()); + + dc.SetTextForeground(*wxBLUE); + dc.SetBackgroundMode(wxTRANSPARENT); + dc.DrawText("This is custom control with transparency", 0, 2); + } +}; // ---------------------------------------------------------------------------- // constants @@ -299,6 +327,8 @@ MyCanvas::MyCanvas(wxFrame *parent) "right one drawn directly", wxPoint(150, 20)); + new ControlWithTransparency(this, wxPoint(65, 125), wxSize(300, 22)); + SetFocusIgnoringChildren(); SetBackgroundColour(*wxCYAN); }