2009-08-15 7 views

Antwort

2

Ich würde versuchen, ein zweites Bild mit 50% Transparenz zu erstellen.

Color pixelColor = bitmap.GetPixel(x,y); 
Color transparentPixelColor = MakePixelTransparent(pixelColor); 
bitmap.SetPixel(x,y,transparentPixelColor); 

MakePixelTransparent() würde stellen Sie den Alpha-Wert in der angegebenen Farbe (so etwas wie immer den ARGB-Wert, die Einstellung der A-: Als System.Drawing.Bitmap können Sie die Pixel (GetPixel, SetPixel) erhalten und setzen Byte und erstellen Sie eine neue Farbe aus dem neuen Argb-Wert).

Das ist, was ich versuchen würde (ich habe aber nicht) ...

EDIT: ich es jetzt versucht, aus Neugier:

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. Auf diese Weise können Sie auch nur Teile des Bildes transparent ...

+1

Autsch, das ist langsam ... Looping mit GetPixel und SetPixel. Hier würde ich die Verwendung eines Bytes [] oder Int * untersuchen. http://www.codeproject.com/KB/GDI-plus/pointerlessimageimproc.aspx – Dykam

+0

Nun, ich habe es in etwa 3 Minuten gehackt. Ich behauptete nicht, dass es fast zu schnell wäre. – EricSchaefer

Verwandte Themen