tags:

views:

40

answers:

2

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.

A: 

Take a look to this

ArsenMkrt
Well, I use TransparentBlt to make certain color transparent, but it's very imperfect. I'm using Blender3D for creating images, and the resulting images have soft transparency, not only 0/1. And thus I need to alphaBlend with soft transparency, or the result will look ugly chopped.
Michael Timoshin
+1  A: 

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#.

Michael Timoshin