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:
Vadim Zeitlin
2004-07-25 12:59:32 +00:00
parent 90bddb8566
commit 92661f9794
3 changed files with 33 additions and 2 deletions

View File

@@ -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:

View File

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

View File

@@ -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,