From: Jaakko Salli Date: Fri, 25 Feb 2011 13:00:57 +0000 (+0000) Subject: In wxPGProperty::SetValueImage(), use wxImage::Rescale() for scaling down the bitmap... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/28e27c34756e5e8766937980d7cc1a6ed5950d34 In wxPGProperty::SetValueImage(), use wxImage::Rescale() for scaling down the bitmap instead of wx(Memory)DC functions. Results should look much nicer and also retains alpha channel with much less effert. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67024 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/propgrid/property.cpp b/src/propgrid/property.cpp index 6d02169114..0d0826386e 100644 --- a/src/propgrid/property.cpp +++ b/src/propgrid/property.cpp @@ -2097,19 +2097,13 @@ void wxPGProperty::SetValueImage( wxBitmap& bmp ) if ( imSz.y != maxSz.y ) { - // Create a memory DC - wxBitmap* bmpNew = new wxBitmap(maxSz.x,maxSz.y,bmp.GetDepth()); - - wxMemoryDC dc; - dc.SelectObject(*bmpNew); - - // Scale - // FIXME: This is ugly - use image or wait for scaling patch. + // Here we use high-quality wxImage scaling functions available + wxImage img = bmp.ConvertToImage(); double scaleY = (double)maxSz.y / (double)imSz.y; - - dc.SetUserScale(scaleY, scaleY); - - dc.DrawBitmap(bmp, 0, 0); + img.Rescale(((double)bmp.GetWidth())*scaleY, + ((double)bmp.GetHeight())*scaleY, + wxIMAGE_QUALITY_HIGH); + wxBitmap* bmpNew = new wxBitmap(img, 32); m_valueBitmap = bmpNew; }