我想用GDI +合併兩個PNG的透明度,我已經存儲在ImageList中,然後在PictureBox中顯示它。我的PictureBox大小,第一個圖像大小和第二個圖像大小都是相同的。我認爲這會很簡單,但下面的代碼不起作用,我不知道爲什麼。我已經搜索,但我找不到任何代碼片段專門處理PictureBoxes。將2個透明圖像合併到一個PictureBox中
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PictureBox1.Image = Nothing
Dim myGraphic As Graphics = PictureBox1.CreateGraphics
myGraphic.DrawImageUnscaled(ImageList1.Images(0), 0, 0)
myGraphic.DrawImageUnscaled(ImageList1.Images(1), 0, 0)
End Sub
有誰知道我缺少的是什麼?在我點擊按鈕的那一刻,我看到PictureBox閃爍着一秒鐘的圖像。
在此先感謝。
感謝您的回覆。 它應該覆蓋它,因爲第二個圖像是透明覆蓋圖。我想實現的一個例子可以在這裏找到:http://www.codeproject.com/KB/cs/Merge_Images_in_C_.aspx我想這樣做,而不是寫入文件我想在一個文件中顯示PictureBox(和我的程序是在VB.Net而不是C#)。 你能否通過使picturebox失效來解釋你的意思? 我嘗試了最小化/最大化的事情,但沒有發生任何事情。 – quantum
簡單:只需調用Control.Invalidate()方法即可。看到這裏:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.invalidate(v=vs.71).aspx它存在,因爲繪製到實際屏幕是一個昂貴的過程。因此,您不必顯示繪圖表面上繪製的每個東西的每一步,而是繪製所有東西並告訴曲面自行更新。這就是說,*我認爲你的方法會一起走錯路。您應該將所有繪圖邏輯放置在控件的** Paint-event **中。 – Pedery