WPF中如何将一种颜色从图片中滤掉

来源:百度知道 编辑:UC知道 时间:2024/06/27 03:58:20
在WPF想将一些图片的中的某些颜色滤掉,不知道怎么弄啊.请各位帮忙

1. 最好是将图像的不要的颜色先去掉, 再放到 wpf 项目中.

2. 第一种情形并不是需要的, 有时要将图片中的某一颜色换掉, 例如将图片的红色换成蓝色, 或者将红色褪掉.

下面的例子是 用 Image 显示 c:\wpf.bmp 图像, 图像是白色背景, 有红色的 wpf 文字和一些紫色的装饰线条, wpf 没有直接支持 color key 这种东西 (至少我不知道).

在 xaml 档先不载入.
<Border x:Name="imgContainer" Background="Black" Width="100" Height="100">
<Image x:Name="myImg" Stretch="None"/>
</Border>

在 code 载入 c:\wpf.bmp, 去掉白色:
// 引用 System.Drawing
Bitmap b = new Bitmap(@"C:\wpf.bmp");
b.MakeTransparent(System.Drawing.Color.White);
myImg.Source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(b.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());

这样, 原来的白色显示为黑色, 因为 容器 Border 的背景是黑色.
可以将 Border 的背景设置为其他颜色, 或者透明, 以达到自己期望的结果.
imgContainer.Background = System.Windows.Media.Brushes.Green; // 绿色

imgContainer.