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中如何将一种颜色从图片中滤掉的主要内容,如果未能解决你的问题,请参考以下文章

ps怎么把一种颜色变成另一种颜色?

WPF 修改图片颜色

如何从 WPF MSIX 应用程序(桌面桥)更改 Windows 10 颜色设置?

wpf datagrid 滚动条如何设置宽度和颜色

WPF 通过位处理合并图片

如何在WPF中绘制具有背景颜色的矩形