我正在尝试使用GDI +将两个PNG与我存储在ImageList中的透明度合并,然后在PictureBox中显示。我的PictureBox大小,第一个图像大小和第二个图像大小都是相同的。我认为这很简单,但下面的代码不起作用,我不知道为什么。我搜索过,但找不到任何专门处理PictureBoxes的代码片段。
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闪烁着图像一瞬间。
提前致谢。
答案 0 :(得分:0)
首先,您在完全相同的位置绘制图像,因此您可能会冒一个图像完全覆盖另一个图像的风险。
尽管如此,仅仅依靠图形是不够的。您也需要使图片框控件无效。这将迫使它重绘自己。
作为对您当前程序的粗略测试,您可以将其最小化然后最大化它并查看PNG是否存在。这也将强制重绘图片框。
答案 1 :(得分:0)
啊,现在我明白我做错了什么。
这是我修改后的代码。问题解决了。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim newimage As New Bitmap(ImageList1.Images(0).Width, ImageList1.Images(0).Height)
Dim g As Graphics = Graphics.FromImage(newimage)
g.DrawImage(ImageList1.Images(0), 0, 0)
g.DrawImage(ImageList1.Images(1), 0, 0)
PictureBox1.Image = newimage
g.Dispose()
End Sub