Optimize drawing of small bitmaps with alpha in wxMSW
Don't erase alpha channel of the entire destination image after drawing on it using AlphaBlend(), we only need to do it for the area corresponding to the bitmap drawn on it. This speeds things up when drawing small bitmaps with alpha on a big bitmap without alpha selected into wxMemoryDC which is a common case. See #16766.
This commit is contained in:
committed by
Vadim Zeitlin
parent
351103cc45
commit
d04e256993
@@ -2624,11 +2624,12 @@ static bool AlphaBlt(wxMSWDCImpl* dcDst,
|
||||
if ( data )
|
||||
{
|
||||
wxAlphaPixelData::Iterator p(data);
|
||||
for ( int old_y = 0; old_y < data.GetHeight(); old_y++ )
|
||||
p.Offset(data, x, y);
|
||||
for ( int yDst = 0; yDst < dstHeight; yDst++ )
|
||||
{
|
||||
wxAlphaPixelData::Iterator rowStart = p;
|
||||
|
||||
for ( int old_x = 0; old_x < data.GetWidth(); old_x++ )
|
||||
for ( int xDst = 0; xDst < dstWidth; xDst++ )
|
||||
{
|
||||
// We choose to use wxALPHA_TRANSPARENT instead
|
||||
// of perhaps more logical wxALPHA_OPAQUE here
|
||||
|
Reference in New Issue
Block a user