2009-08-15 44 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

相關問題