I'm trying to write a fast transparency class in c#. How do I get PNG with transparency into GDI32 to use it with alphaBlend?
I tried to put it directly via getHbitmap/selectObject, tried to paint it with setPixel on temporary DC, but all to no avail.
In the result I found (afer a sleepless night), that simplest of getting transparency into GDI32 is to set Color.Black in GetHbitmap(). Like this:
using (Bitmap tBMP = new Bitmap(@"myBitmap.png"))
{
BMPObject = tBMP.GetHbitmap(Color.Black);
sz = tBMP.Size;
}
Any other color than black will give tinting in unexpected color of transparent areas. Now I'm quite happy with the result: fast alpha-blending in c#.
来源:https://stackoverflow.com/questions/2294411/how-do-i-get-png-with-transparency-into-gdi32-in-c-to-use-it-with-alphablend