2010-07-19 51 views
6

hy vọng!cách vẽ hình ảnh trên canvas với độ trong suốt/alpha

tôi bỏ usings vv ... chỉ là mã đơn giản:

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

tôi muốn vẽ image với alpha 55% trên canvas. image là tệp .png và sử dụng độ trong suốt. (LƯU Ý: tôi không muốn tạo image.MakeTransparent() - nó đã trong suốt, tôi chỉ cần một số hiệu ứng alpha)

làm cách nào tôi có thể đạt được điều này?

Trả lời

14

Hãy thử ColorMatrix và 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

làm việc như sự quyến rũ! cảm ơn! –

+7

quá tải của bạn của 'DrawImage' không tồn tại: tôi đã sử dụng:' canvas.DrawImage (hình ảnh, hình chữ nhật mới (0, 0, image.Width, image.Height), 0, 0, image.Width, image.Height , GraphicsUnit.Pixel, imageAttributes); ' –

+1

Cách này dường như chỉ hoạt động đối với Định dạng pixel Rgb24. Tôi đã thử Argb32 hoặc Indexed8bpp, nó không hoạt động. – IlPADlI

Các vấn đề liên quan