2010-07-19 23 views
6

ile tuval üzerine resim nasıl çizilir! i canvas alfa% 55 ile image çekmek istiyorumSaydamlık/alfa

var image = Image.FromFile(/* my magic source */); 
var bitmap = new Bitmap(image.Width, image.Height); 
var canvas = Graphics.FromImage(bitmap); 
var brush = new SolidBrush(/* my magic color */); 
canvas.FillRectangle(brush, 0, 0, image.Width, image.Height); 
canvas.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height)); 
canvas.Save(); 
bitmap.Save(/* my magic target */); 

:

i ... sadece düz kod vb usings bıraktı. image bir .png dosyasıdır ve saydamlığı kullanır. (NOT: image.MakeTransparent() yapmak istemiyorum - bu zaten şeffaf, sadece bazı alfa efektlerine ihtiyacım var)

Bunu nasıl başarabilirim?

cevap

14

ColorMatrix ve ImageAttributes deneyin:

ColorMatrix cm = new ColorMatrix(); 
cm.Matrix33 = 0.55f; 
ImageAttributes ia = new ImageAttributes(); 
ia.SetColorMatrix(cm); 
canvas.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, ia); 
+0

çekicilik gibi çalışan! Teşekkürler! –

+7

'DrawImage' aşırı yükünüz mevcut değil: kullanıyorum:' canvas.DrawImage (resim, yeni Dikdörtgen (0, 0, image.Width, image.Height), 0, 0, image.Width, image.Height , GraphicsUnit.Pixel, imageAttributes); –

+1

Bu yol sadece Rgb24 Piksel Biçimi için çalışıyor gibi görünüyor. Argb32 veya Indexed8bpp denedim, Onun çalışma değil. – IlPADlI