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 ...
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
Nun, ich habe es in etwa 3 Minuten gehackt. Ich behauptete nicht, dass es fast zu schnell wäre. – EricSchaefer