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:
Vadim Zeitlin 2011-03-20 22:33:25 +00:00
parent fc0ae1e319
commit ab4387390c

View File

@ -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);
}