Add wxPanel::SetBackgroundBitmap().

This method provides a simple way to set a background bitmap without defining
an EVT_ERASE_BACKGROUND handler and, more importantly, one that works
correctly in wxMSW for a window with children as it paints the background of
transparent children too.

Add a test of this method to the erase sample.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67253 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-03-20 00:00:49 +00:00
parent cf858bab79
commit cd95f7e65c
19 changed files with 509 additions and 162 deletions

View File

@@ -24,6 +24,7 @@
#endif
#ifndef WX_PRECOMP
#include "wx/brush.h"
#include "wx/panel.h"
#endif // WX_PRECOMP
@@ -44,3 +45,17 @@ bool wxPanel::HasTransparentBackground()
return false;
}
void wxPanel::DoSetBackgroundBitmap(const wxBitmap& bmp)
{
delete m_backgroundBrush;
m_backgroundBrush = bmp.IsOk() ? new wxBrush(bmp) : NULL;
}
WXHBRUSH wxPanel::MSWGetCustomBgBrush()
{
if ( m_backgroundBrush )
return (WXHBRUSH)m_backgroundBrush->GetResourceHandle();
return wxPanelBase::MSWGetCustomBgBrush();
}