support for alpha channel in toolbars (patch 949843)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28466 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -252,6 +252,7 @@ wxMSW:
|
||||
|
||||
- fixed UNC paths handling in wxFileSystem (Daniel Nash)
|
||||
- set wxKeyEvent::m_uniChar in Unicode build
|
||||
- support for alpha channel in toolbar bitmaps (Jurgen Doornik)
|
||||
|
||||
wxWinCE:
|
||||
|
||||
|
@@ -51,6 +51,20 @@ before creating the toolbar:
|
||||
wxSystemOptions::SetOption(wxT("msw.remap"), 0);
|
||||
\end{verbatim}
|
||||
|
||||
If you wish to use 32-bit images (which include an alpha channel for transparency)
|
||||
use:
|
||||
|
||||
\begin{verbatim}
|
||||
wxSystemOptions::SetOption(wxT("msw.remap"), 2);
|
||||
\end{verbatim}
|
||||
|
||||
then colour remapping is switched of, and a transparent background used. But only
|
||||
use this option under Windows XP with true colour:
|
||||
|
||||
\begin{verbatim}
|
||||
(wxTheApp->GetComCtl32Version() >= 600 && ::wxDisplayDepth() >= 32)
|
||||
\end{verbatim}
|
||||
|
||||
\wxheading{Window styles}
|
||||
|
||||
\twocolwidtha{5cm}
|
||||
|
@@ -481,6 +481,19 @@ bool wxToolBar::Realize()
|
||||
|
||||
const bool isVertical = HasFlag(wxTB_VERTICAL);
|
||||
|
||||
bool doRemap, doRemapBg, doTransparent;
|
||||
if (wxSystemOptions::GetOptionInt(wxT("msw.remap")) == 2)
|
||||
{
|
||||
doRemapBg = doRemap = false;
|
||||
doTransparent = true;
|
||||
}
|
||||
else
|
||||
{ doRemap = !wxSystemOptions::HasOption(wxT("msw.remap"))
|
||||
|| wxSystemOptions::GetOptionInt(wxT("msw.remap")) == 1;
|
||||
doRemapBg = !doRemap;
|
||||
doTransparent = false;
|
||||
}
|
||||
|
||||
// delete all old buttons, if any
|
||||
for ( size_t pos = 0; pos < m_nButtons; pos++ )
|
||||
{
|
||||
@@ -520,6 +533,9 @@ bool wxToolBar::Realize()
|
||||
wxMemoryDC dcAllButtons;
|
||||
wxBitmap bitmap(totalBitmapWidth, totalBitmapHeight);
|
||||
dcAllButtons.SelectObject(bitmap);
|
||||
if (doTransparent)
|
||||
dcAllButtons.SetBackground(*wxTRANSPARENT_BRUSH);
|
||||
else
|
||||
dcAllButtons.SetBackground(*wxLIGHT_GREY_BRUSH);
|
||||
dcAllButtons.Clear();
|
||||
|
||||
@@ -544,7 +560,7 @@ bool wxToolBar::Realize()
|
||||
MemoryHDC memoryDC2;
|
||||
#endif // USE_BITMAP_MASKS/!USE_BITMAP_MASKS
|
||||
|
||||
if (wxSystemOptions::HasOption(wxT("msw.remap")) && wxSystemOptions::GetOptionInt(wxT("msw.remap")) == 0)
|
||||
if (doRemapBg)
|
||||
{
|
||||
#if USE_BITMAP_MASKS
|
||||
dcAllButtons.SelectObject(wxNullBitmap);
|
||||
@@ -610,7 +626,7 @@ bool wxToolBar::Realize()
|
||||
bitmap.SetHBITMAP(0);
|
||||
#endif // USE_BITMAP_MASKS/!USE_BITMAP_MASKS
|
||||
|
||||
if (!wxSystemOptions::HasOption(wxT("msw.remap")) || wxSystemOptions::GetOptionInt(wxT("msw.remap")) == 1)
|
||||
if (doRemap)
|
||||
{
|
||||
// Map to system colours
|
||||
hBitmap = (HBITMAP)MapBitmap((WXHBITMAP) hBitmap,
|
||||
|
Reference in New Issue
Block a user