2010-07-19 6 views
6

hy là!comment dessiner une image sur une toile avec transparence/alpha

J'ai laissé usings etc ... juste un code simple:

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

je veux dessiner image alpha 55% sur canvas. image est un fichier .png et utilise la transparence elle-même. (NOTE: je ne veux pas faire image.MakeTransparent() - il est déjà transparent, j'ai juste besoin d'un effet alpha)

comment puis-je y parvenir?

Répondre

14

Essayez ColorMatrix et ImageAttributes:

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

travailler comme un charme! Merci! –

+7

votre surcharge de 'DrawImage' n'existe pas: j'ai utilisé:' canvas.DrawImage (image, nouveau Rectangle (0, 0, image.Width, image.Hauteur), 0, 0, image.Width, image.Hauteur , GraphicsUnit.Pixel, imageAttributes); ' –

+1

Cette manière semble fonctionner seulement pour le format de Pixel de Rgb24. J'ai essayé Argb32 ou Indexed8bpp, Ce n'est pas le travail. – IlPADlI

Questions connexes