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
This commit is contained in:
parent
3a4a38c143
commit
28e27c3475
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user