2012-11-19 48 views
0

我有3個圖像。如何創建一個基於2個PNG複合的圖像,每個透明區域都有

  1. GreenBackground.png
  2. RedCircle.png
  3. BlueCircle.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) 

任何想法我可能做錯了什麼?

+0

您可以附加您使用的三個源PNG文件 - 可能是一些與特定PNG子格式(8位組爲32位)呢? –

回答

1

您正在使用的位圖的構造函數只使用通過圖形的DPI對象:

Graphics對象指定爲新的位圖的分辨率。 MSDN Ref

所以基本上你正在創建一個新的空位圖。您的圖形對象設置爲修改背景圖像,因此您需要做的只是:

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 
相關問題