0

我有 3 张图片。

  1. 绿色背景.png
  2. 红圈.png
  3. 蓝色圆圈.png

都是80x60的图片

红色和蓝色圆圈出现在该区域内的不同位置。

我试图通过首先加载背景,然后是红色圆圈,最后是蓝色圆圈来生成合成图像。

然而,在资源管理器中生成的 Results.png 图像显示为全黑,并且在 Windows 照片查看器中打开时,它似乎是完全透明的。

    Dim Background = Image.FromFile("GreenBackground.png", True)
    Dim RedCircle = Image.FromFile("RedCircle.png", True)
    Dim BlueCircle = Image.FromFile("BlueCircle.png", True)

    Dim Canvas = Graphics.FromImage(Background)
    Canvas.DrawImage(RedCircle, New Point(0, 0))
    Canvas.DrawImage(BlueCircle, New Point(0, 0))
    Dim Result As New Bitmap(Background.Width, Background.Height, Canvas)
    Result.Save("Result.png", System.Drawing.Imaging.ImageFormat.Png)

有什么想法我可能做错了吗?

4

1 回答 1

1

您使用的 Bitmap 构造函数仅使用传递的图形对象的 DPI:

指定新位图分辨率的 Graphics 对象。MSDN 参考

所以基本上你现在正在创建一个新的空位图。您的图形对象已设置为修改背景图像,因此您需要做的就是:

Background.Save("Result.png", System.Drawing.Imaging.ImageFormat.Png) 在修改结束时。

LinqPad 示例:

Sub Main
    Dim image = System.Drawing.Image.FromFile("y.png", true)
    Dim overlay = System.Drawing.Image.FromFile("x.png", true)
    Dim g = System.Drawing.Graphics.FromImage(image)
    g.DrawImage(overlay, new System.Drawing.Point(0,0))
    image.Save("result.png", System.Drawing.Imaging.ImageFormat.Png)
End Sub
于 2012-11-19T16:46:55.103 回答