C#:使用透明度将一个位图绘制到另一个位图上

我有两个位图,名为largeBmp和smallBmp。 我想将smallBmp绘制到largeBmp上,然后将结果绘制到屏幕上。 SmallBmp的白色像素应该是透明的。 这是我正在使用的代码:

public Bitmap Superimpose(Bitmap largeBmp, Bitmap smallBmp) { Graphics g = Graphics.FromImage(largeBmp); g.CompositingMode = CompositingMode.SourceCopy; smallBmp.MakeTransparent(); int margin = 5; int x = largeBmp.Width - smallBmp.Width - margin; int y = largeBmp.Height - smallBmp.Height - margin; g.DrawImage(smallBmp, new Point(x, y)); return largeBmp; } 

问题是,只要smallBmp透明,结果就会变得透明! 我只是想看看bigBmp,而不是它背后的内容。

CompositingMode.SourceCopy就是这里的问题。 您希望CompositingMode.SourceOver获得alpha混合。

指定小位图的透明度颜色。 例如

 Bitmap largeImage = new Bitmap(); Bitmap smallImage = new Bitmap(); --> smallImage.MakeTransparent(Color.White); Graphics g = Graphics.FromImage(largeImage); g.DrawImage(smallImage, new Point(10,10);