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)
|
- fixed UNC paths handling in wxFileSystem (Daniel Nash)
|
||||||
- set wxKeyEvent::m_uniChar in Unicode build
|
- set wxKeyEvent::m_uniChar in Unicode build
|
||||||
|
- support for alpha channel in toolbar bitmaps (Jurgen Doornik)
|
||||||
|
|
||||||
wxWinCE:
|
wxWinCE:
|
||||||
|
|
||||||
|
@@ -51,6 +51,20 @@ before creating the toolbar:
|
|||||||
wxSystemOptions::SetOption(wxT("msw.remap"), 0);
|
wxSystemOptions::SetOption(wxT("msw.remap"), 0);
|
||||||
\end{verbatim}
|
\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}
|
\wxheading{Window styles}
|
||||||
|
|
||||||
\twocolwidtha{5cm}
|
\twocolwidtha{5cm}
|
||||||
|
@@ -481,6 +481,19 @@ bool wxToolBar::Realize()
|
|||||||
|
|
||||||
const bool isVertical = HasFlag(wxTB_VERTICAL);
|
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
|
// delete all old buttons, if any
|
||||||
for ( size_t pos = 0; pos < m_nButtons; pos++ )
|
for ( size_t pos = 0; pos < m_nButtons; pos++ )
|
||||||
{
|
{
|
||||||
@@ -520,6 +533,9 @@ bool wxToolBar::Realize()
|
|||||||
wxMemoryDC dcAllButtons;
|
wxMemoryDC dcAllButtons;
|
||||||
wxBitmap bitmap(totalBitmapWidth, totalBitmapHeight);
|
wxBitmap bitmap(totalBitmapWidth, totalBitmapHeight);
|
||||||
dcAllButtons.SelectObject(bitmap);
|
dcAllButtons.SelectObject(bitmap);
|
||||||
|
if (doTransparent)
|
||||||
|
dcAllButtons.SetBackground(*wxTRANSPARENT_BRUSH);
|
||||||
|
else
|
||||||
dcAllButtons.SetBackground(*wxLIGHT_GREY_BRUSH);
|
dcAllButtons.SetBackground(*wxLIGHT_GREY_BRUSH);
|
||||||
dcAllButtons.Clear();
|
dcAllButtons.Clear();
|
||||||
|
|
||||||
@@ -544,7 +560,7 @@ bool wxToolBar::Realize()
|
|||||||
MemoryHDC memoryDC2;
|
MemoryHDC memoryDC2;
|
||||||
#endif // USE_BITMAP_MASKS/!USE_BITMAP_MASKS
|
#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
|
#if USE_BITMAP_MASKS
|
||||||
dcAllButtons.SelectObject(wxNullBitmap);
|
dcAllButtons.SelectObject(wxNullBitmap);
|
||||||
@@ -610,7 +626,7 @@ bool wxToolBar::Realize()
|
|||||||
bitmap.SetHBITMAP(0);
|
bitmap.SetHBITMAP(0);
|
||||||
#endif // USE_BITMAP_MASKS/!USE_BITMAP_MASKS
|
#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
|
// Map to system colours
|
||||||
hBitmap = (HBITMAP)MapBitmap((WXHBITMAP) hBitmap,
|
hBitmap = (HBITMAP)MapBitmap((WXHBITMAP) hBitmap,
|
||||||
|
Reference in New Issue
Block a user