2010-07-15 83 views
18

我有兩個位圖,名爲largeBmp和smallBmp。我想將smallBmp繪製到largeBmp上,然後將結果繪製到屏幕上。 SmallBmp的白色像素應該是透明的。下面是我使用的代碼:C#:繪製一個位圖到另一個,透明

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,而不是看它背後的原因。

回答

22

CompositingMode.SourceCopy這裏是問題。你想CompositingMode.SourceOver得到alpha混合。

+0

+1,表示同意。默認是好的。 – 2010-07-15 18:54:42

+0

啊,那太容易了! – 2010-07-15 20:41:34

1

指定您的小位圖的透明度顏色。例如

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

不,它已經將白色轉換爲透明。問題是透明切割通過兩個圖像。 – 2010-07-15 20:41:13