使用ARGB和图形c#叠加位图

本文关键字:叠加 位图 图形 ARGB 使用 | 更新日期: 2023-09-27 18:01:45

我正在尝试叠加两个位图

我有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"answers"B"都是相同的格式,相同的高度和宽度,但当我保存图像时,它看起来好像只有"B"被绘制。

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

我认为先画"B",然后画"A","A"的alpha通道值为200-250的像素将位于"B"的顶部

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

使用ARGB和图形c#叠加位图

在"B"之前绘制位图"A"似乎是答案。很简单,在这个小小的改变之前我尝试了很多。希望这篇文章对大家有所帮助