2009-08-15 60 views

回答

2

我会尝试创建50%透明度的第二个图像。作为System.Drawing.Bitmap你可以获取和设置其像素(GetPixel,SetPixel):

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

MakePixelTransparent()将设置在所提供的颜色(Alpha值像获得ARGB值,设置A-字节并从新的Argb值中创建一个新的颜色)。

那是什么我会尝试(我没虽然)...

编辑: 我试了一下,现在,出于好奇:

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); 

作品。这样,你也可以使图像透明的只有部分...

+1

哎哟,那就是慢...使用GetPixel和SetPixel进行循环。在这里,我将研究使用byte []或int *。 http://www.codeproject.com/KB/GDI-plus/pointerlessimageproc.aspx – Dykam 2009-08-15 07:17:52

+0

呃,我在3分钟左右就砍了。我没有声称它会快到任何地方。 – EricSchaefer 2009-08-15 09:26:16

相关问题