在WPF中重新着色给定的DrawingImage(代码中)

时间:2012-11-23 16:16:26

标签: wpf colors drawing

我有一个DrawingImage,我已经通过宏观Svg2Xaml plugin从SVG转换而来。通过这种方式,我可以让用户轻松定义应用程序中某些元素的视觉效果。

在某些用例中,我想重新着色给定的DrawingImage。最简单的情况是使其成为灰度。

有没有办法递归遍历所有元素,获取颜色并将其切换到灰度对应物?或者 - 例如 - 在整个图像上使用类似“过滤器”的东西?

我在WPF方面并不是很有经验,但如果能够做到这一点,那将使我的工作变得更加轻松。

什么是我最好的选择?

同样重要的是DrawingImage使用矢量图形,所以我不想将图像像素化。

2 个答案:

答案 0 :(得分:1)

你可能需要查看WPF 资源字典,然后使用 DynamicResource

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Color x:Key="FrontColor">White</Color>

    <SolidColorBrush x:Key="Foreground" Color="{DynamicResource FrontColor}" />
</ResourceDictionary>

答案 1 :(得分:1)

将我的评论转换为答案:

对于制作可视灰度的具体情况,您可能需要查看Shader Effect Library