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
This commit is contained in:
		| @@ -139,6 +139,34 @@ private: | |||||||
|     DECLARE_EVENT_TABLE() |     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 | // constants | ||||||
| @@ -299,6 +327,8 @@ MyCanvas::MyCanvas(wxFrame *parent) | |||||||
|                      "right one drawn directly", |                      "right one drawn directly", | ||||||
|                      wxPoint(150, 20)); |                      wxPoint(150, 20)); | ||||||
|  |  | ||||||
|  |     new ControlWithTransparency(this, wxPoint(65, 125), wxSize(300, 22)); | ||||||
|  |  | ||||||
|     SetFocusIgnoringChildren(); |     SetFocusIgnoringChildren(); | ||||||
|     SetBackgroundColour(*wxCYAN); |     SetBackgroundColour(*wxCYAN); | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user