2011-01-06 93 views
1

我試圖用GetPixel和SetPixel將一張圖片的內容複製到另一張圖片上(我知道還有其他的方法可以這樣做,但是有理由我想試試這個; D)VB .NET圖片GetPixel&SetPixel:包含alpha?

無論如何,圖片是.png圖像,因此它們包含透明度設置。

但由於某些原因,它似乎是當我使用GetPixel & SetPixel將一個圖像放在另一個圖像上時,看起來第二個圖像完全替換了另一個圖像。我的意思是,當我使用GetPixel & SetPixel時,透明度設置似乎不受尊重。

兩幅圖像的大小相同。兩者都有透明區域。

+0

是這樣,你知道,還有其他(更好)的方式來複制一個圖像超過另一個建立在.Net,正確的? – Flipster 2011-01-06 01:27:59

+0

是的。但是,我對其他方法有自己的問題。我問這主要是爲了好奇心的目的,而我解決了我的其他問題:) – Voldemort 2011-01-06 01:50:31

回答

2

在致電SetPixel()之前,您需要致電MakeTransparnet()。下面是一些代碼,拷貝α-圖像的第一像素的內容到另一幅圖像並保留是第一個圖像的Alpha通道:

Using img1 = New Bitmap("c:\Users\Owner\Desktop\1.png") 
     PX = img1.GetPixel(0, 0) 
    End Using 

    Using img2 = New Bitmap("c:\Users\Owner\Desktop\2.png") 
     img2.MakeTransparent() '//Sets the transparent value and converts the image to Format32bppArgb 
     img2.SetPixel(0, 0, PX) 
     img2.Save("c:\Users\Owner\Desktop\3.png") 
    End Using