2014-03-04 54 views
0

我試圖找到一種方法來在Paint事件中將兩個Bitmaps合併在一起。我的代碼如下所示:C#如何合併兩個Bitmaps?

private void GraphicsForm_Paint(object sender, PaintEventArgs e) 
{ 
    try 
    { 
     Bitmap1 = new Bitmap(1366, 768); 
     Bitmap2 = new Bitmap(1366, 768); 
     OutputBitmap = ...//and this is where I've stuck :(
    } 
    catch 
    { 
    } 
} 

的問題是更多的問題,因爲它吸引到Bitmap2圖形對象是在其他類。 我還希望Bitmap2在OutputBitmap上的Bitmap1後面繪製。

任何人都可以給我一個很好的建議如何合併這兩個Bitmaps(彼此背後,但)到一個輸出位圖?

謝謝:)

+0

不知道你在問什麼。你只是想將每個像素的顏色值加在一起? –

+0

a)對不起,但我無法理解你*有問題的情況。 b)你的意思是*合併*。例如,你如何合併兩種顏色。 –

+0

您是否試圖實際創建一個位圖來保存或僅在一個窗體上繪製2個位圖?如果是後者,只需按照所需順序繪製每個位圖即可。 – TyCobb

回答

0

假設你的位圖有透明區域,嘗試創建一個位圖和其他兩個位圖繪製到它在你想要的順序:

private Bitmap MergedBitmaps(Bitmap bmp1, Bitmap bmp2) { 
    Bitmap result = new Bitmap(Math.Max(bmp1.Width, bmp2.Width), 
          Math.Max(bmp1.Height, bmp2.Height)); 
    using (Graphics g = Graphics.FromImage(result)) { 
    g.DrawImage(bmp2, Point.Empty); 
    g.DrawImage(bmp1, Point.Empty); 
    } 
    return result; 
} 
+0

這是怎麼合併*兩個圖像? 'A或B''A和B''異或B''(A + B)/ 2'等? –

+0

@ L.B我正在閱讀這篇文章,因爲OP只是想從他們擁有的兩個位圖中找到一個位圖。我沒有解釋任何*混合*是必需的。 – LarsTech