2010-07-19 14 views
6

hy there!come disegnare un'immagine su una tela con trasparenza/alpha

ho lasciato fuori usings ecc ... solo codice di pianura:

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

voglio richiamare image con l'alfa del 55% sul canvas. image è un file .png e utilizza la trasparenza stessa. (NOTA: non voglio fare image.MakeTransparent() - è già trasparente, ho solo bisogno di un effetto alfa)

come posso ottenere questo?

risposta

14

Prova ColorMatrix e 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

lavorare come fascino! Grazie! –

+7

il tuo overload di 'DrawImage' non esiste: ho usato:' canvas.DrawImage (immagine, nuovo Rectangle (0, 0, image.Width, image.Height), 0, 0, image.Width, image.Height , GraphicsUnit.Pixel, imageAttributes); ' –

+1

In questo modo sembra funzionare solo per il formato Pixel Rgb24. Ho provato Argb32 o Indexed8bpp, non funziona. – IlPADlI

Problemi correlati