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:
parent
fc0ae1e319
commit
ab4387390c
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user