With DrawImage(), on the destination Graphics... SetCompositingMode(CompositingModeSourceCopy) will cause the drawn image to replace whatever was in the destination image. SetCompositingMode(CompositingModeSourceOver) will cause the drawn image to be blended with whatever was in the destination image (the resulting alpha values are not always set to 255). You should get the same results as with a pen and a brush. A bitmap filled with values with alpha set to 0 drawn on an image with alpha set to, say, 0x80, will leave the destination alpha 80. That matches your replace 0s with the first column alpha value, just like with a brush or pen. Regardless, I guess my point was that to get the results you want with the alpha channels, I don't believe the APIs are going to do it. Even though you were looking to avoid it, LockBits/UnlockBits makes it relatively trivial to loop through the images and combine them yourself. Mark -- modified at 13:09 Monday 25th June, 2007
"Go that way, really fast. If something gets in your way, turn."