WPF中如何将一种颜色从图片中滤掉
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF中如何将一种颜色从图片中滤掉相关的知识,希望对你有一定的参考价值。
在WPF想将一些图片的中的某些颜色滤掉,不知道怎么弄啊.请各位帮忙
参考技术A 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.Background = System.Windows.Media.Brushes.Transparent; // 透明
.....等等.
以上是关于WPF中如何将一种颜色从图片中滤掉的主要内容,如果未能解决你的问题,请参考以下文章