[PATCH 2/2] comctl32: Paint 32-bpp bitmaps with an alpha channel using GdiAlphaBlend.

Dmitry Timoshkov dmitry at baikal.ru
Fri May 31 08:18:32 CDT 2019


Alexandre Julliard <julliard at winehq.org> wrote:

> >> >> My question was whether it's drawn with transparency in that case, since
> >> >> it's not really specified in which cases a DDB is considered to have an
> >> >> alpha channel.
> >> >
> >> > In order to draw it with a transparency it's necessary to create a 32-bpp
> >> > DIB section, copy source bitmap bits, and use GdiAlphaBlend() with a DIB
> >> > section. Basically my patch does all of this.
> >> 
> >> Yes of course. My question was whether on Windows it's drawn transparent
> >> even for the DDB case. I guess the answer is yes since you have an app
> >> that does this, but a small test case wouldn't hurt.
> >
> > I just added the code to my test app to draw a bitmap with BitBlt()
> > loaded with LoadBitmap() (instead of assigning it to the Static control),
> > and the result is drawn without transparency under Windows.
> 
> But if you assign it to the Static control it's transparent, right?  And
> it's really a DDB, right?

Right, it's a DDB. I've attached a test app to the bug 47018. That version
of the test won't run under XP, I've fixed it in a later version, but that
changes nothing to the loading and painting code, I'm just mentioning this
in case you will try it under XP.

> Just want to make sure that we need special handling there, and that
> it's not the app getting a DDB when it should be getting a DIB or
> something like that.

Sure.

-- 
Dmitry.



More information about the wine-devel mailing list