VB .NET Picture getPixel & setPixel: include Alpha?
Domanda
Sto cercando di usare getpixel e setpixel per copiare il contenuto di un'immagine su un'altra (so che ci sono altri metodi per farlo, ma ci sono ragioni per cui voglio provare; D)
Ad ogni modo, le immagini sono immagini .png, quindi includono impostazioni di trasparenza.
Ma per qualche motivo, sembra che quando uso GetPixel e SetPixel per mettere un'immagine su un'altra, sembra che la seconda immagine sostituisca completamente l'altra. Voglio dire, sembra che le impostazioni di trasparenza non siano rispettate quando utilizzo getpixel e setpixel.
Entrambe le immagini hanno le stesse dimensioni. Entrambi hanno aree trasparenti.
Soluzione
Prima di chiamare setPixel () devi chiamare MakeTransParnet (). Ecco un codice che copia il contenuto del primo pixel in un'immagine alfa su un'altra immagine e mantieni il canale Alpha di First Image:
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