Silverlight中的Bitmap.MakeTransparent?

时间:2011-01-26 06:43:42

标签: c# .net silverlight silverlight-4.0

如何在Sivlerlight中使BitmapImage的所有白色像素都透明?

这是您使用常规位图所做的:

//Bitmap with a White background:
var bmp = new Bitmap(100, 100);
using (var g = Graphics.FromImage(bmp)){
    g.Clear(Color.White);
    g.DrawString("String", new Font(FontFamily.GenericSerif,10.0f), new SolidBrush(Color.Red), 30, 30);
}

//I want to make White transparent like Bitmap.MakeTransparent does:
bmp.MakeTransparent(Color.White);

在Silverlight中,我该如何做这样的事情?:

var bmp = new BitmapImage(new Uri("http://www.google.com/images/logos/ps_logo2.png"));
bmp.MakeTransparent(Color.White);

我是Silverlight的新手,但我希望将它绘制到画布或其他东西,所以它可以是一个Shader或类似的东西,如果需要的话。

1 个答案:

答案 0 :(得分:2)

如果需要反复应用效果,着色器是完美的,但有更多选项:

  1. 在您喜欢的绘画程序中预处理图像。 (最快,灵活性较差)
  2. 使用WriteableBitmap预处理图像。 (最慢,更灵活)
  3. 使用着色器。 (快速,非常灵活)
  4. 对于着色器,请查看this wonderful tool Shazzam