使用ARGB和Graphics C#覆盖位图

时间:2016-08-11 00:57:35

标签: c# graphics bitmap alpha-transparency

我正在尝试覆盖两个位图

我有2个ARGB(Format32bppArgb)位图。位图“A”具有一些像素区域,其apha通道值为0(透明),其他像素区域的值为~200 - 255.位图“B”像素都具有值为255的alpha通道。我正在绘制每个像素像这样的图形...

Bitmap OverlayBitmaps(Bitmap underlying, Bitmap overlaying)
    {
        Bitmap finalImage = new Bitmap(underlying.Width, underlying.Height,System.Drawing.Imaging.PixelFormat.Format32bppArgb);
            using (Graphics graphics = Graphics.FromImage(finalImage))//get the underlying graphics object from the image.
            {

            graphics.DrawImage(underlying, new Rectangle(0,0, underlying.Width, underlying.Height));
            graphics.DrawImage(overlaying, new Rectangle(0, 0, overlaying.Width, overlaying.Height));

            finalImage.Save("C:\\test.bmp");
            return finalImage;
        }
    }

“A”和“B”都是相同格式的相同高度相同宽度但是当我保存图像时,看起来好像只画了“B”。

这是因为“B”alpha通道值占主导地位吗?

我认为首先绘制“B”,然后“A”,带有alpha通道值〜200-250的“A”像素将位于“B”之上

我一定错过了什么......有什么建议吗?

1 个答案:

答案 0 :(得分:2)

在“B”之前绘制位图“A”似乎就是答案。这么简单,我在这个小小的改变之前做了很多尝试。希望这有助于其他人