Je voudrais essayer de créer une deuxième image avec 50% de transparence. En tant que System.Drawing.Bitmap vous pouvez obtenir et définir ses pixels (getPixel, SetPixel):
Color pixelColor = bitmap.GetPixel(x,y);
Color transparentPixelColor = MakePixelTransparent(pixelColor);
bitmap.SetPixel(x,y,transparentPixelColor);
MakePixelTransparent()
fixerait la valeur alpha dans la couleur fourni (quelque chose comme obtenir la valeur ARVB, le réglage de la A- octet et créer une nouvelle couleur sur la nouvelle valeur Argb).
Thats ce que je voudrais essayer (je ne l'ai pas bien) ...
EDIT: Je l'ai essayé maintenant, par curiosité:
Bitmap bitmap = new Bitmap("YourImageFile.jpg");
bitmap.MakeTransparent();
for (int y = 0; y < bitmap.Height; y++) {
for (int x = 0; x < bitmap.Width; x++) {
Color pixelColor = bitmap.GetPixel(x, y);
Color transparentPixelColor = Color.FromArgb(pixelColor.ToArgb() & 0x7fffffff);
bitmap.SetPixel(x, y, transparentPixelColor);
}
}
e.Graphics.DrawImage(bitmap, 10, 10);
Works. De cette façon, vous pouvez aussi faire que des parties de l'image transparente ...
Aïe, qui est lent ... en boucle en utilisant GetPixel et SetPixel. Ici, je voudrais enquêter sur l'utilisation d'un byte [] ou int *. http://www.codeproject.com/KB/GDI-plus/pointerlessimageproc.aspx – Dykam
Eh bien, je l'ai piraté en environ 3 minutes. Je n'ai pas prétendu que ce serait proche du jeûne. – EricSchaefer