2011-01-26 24 views
1

如何在Sivlerlight中使所有BitmapImage的白色像素透明?Silverlight中的Bitmap.MakeTransparent?

這是你用什麼常規的位圖:

//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或類似的東西,如果它需要。

回答

2

着色器是完美的,如果你需要的效果再一次被應用,但也有更多的選擇:

  1. Preproces在你喜歡的畫圖程序中的圖像。 (最快,不太靈活)
  2. 使用WriteableBitmap預處理圖像。 (最慢,更靈活)
  3. 使用着色器。 (快速,非常靈活)

對於着色器看this wonderful tool Shazzam