2009-08-15 3 views

Répondre

2

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 ...

+1

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

+0

Eh bien, je l'ai piraté en environ 3 minutes. Je n'ai pas prétendu que ce serait proche du jeûne. – EricSchaefer

Questions connexes