如何更新DrawingImage中的颜色

时间:2016-05-06 14:18:39

标签: c# wpf mvvm themes

我们的应用程序已转换为使用DrawingImage范例使用矢量图像。我想在DrawingImage变量中制作颜色/画笔,并且没有运气。

WHY: 我这样做的理由是我们在应用程序中使用主题,并且我想在主题更改时更改所有图像。从技术上讲,我只想改变颜色而不是图像。

我做了什么: 我已经声明颜色(我说颜色,因为图像中使用了不同类型的笔/画笔)作为DynamicResource连接到定义的画笔,然后尝试通过绑定更新该画笔,我没有得到改变。我还尝试通过绑定它来重绘图像,然后在ApplicationThemeChanged事件触发时重绘它。这仍然不起作用让我感到惊讶。

侧面注意: 我主要想在按钮中执行此操作并扩展Button类以增加功能,将其称为VectorButton。我的观点是,我将VectorButton.cs文件作为可用的方法进行更改。

如果您需要任何具体的代码示例,请询问,我会发布。我认为这很不言自明。

提前感谢您的帮助!

DrawingImage示例(我在主题更改时交换ResourceDictionaries。每个资源字典都有PrimaryColor的副本,但颜色值不同。)

    <DrawingImage x:Key="myVectorIconDrawingImage">
        <DrawingImage.Drawing>
            <DrawingGroup>
                <DrawingGroup.ClipGeometry>
                    <RectangleGeometry Rect="0,0,744.09448,1052.3622" />
                </DrawingGroup.ClipGeometry>
                <DrawingGroup>
                    <GeometryDrawing Brush="{DynamicResource PrimaryColor}">
                        <GeometryDrawing.Pen>
                            <Pen Brush="{DynamicResource PrimaryColor}" Thickness="1" StartLineCap="Flat" EndLineCap="Flat" LineJoin="Miter" />
                        </GeometryDrawing.Pen>
                        <GeometryDrawing.Geometry>
                            <PathGeometry FillRule="EvenOdd" Figures="M239.0625,299L239.0625,349 289.0625,349 289.0625,299 239.0625,299z M309.5625,299.5L309.5625,348.53125 507.59375,348.53125 507.59375,299.5 309.5625,299.5z M239.0625,384L239.0625,434 289.0625,434 289.0625,384 239.0625,384z M309.5625,384.5L309.5625,433.53125 507.59375,433.53125 507.59375,384.5 309.5625,384.5z M239.0625,469L239.0625,519 289.0625,519 289.0625,469 239.0625,469z M309.5625,469.5L309.5625,518.53125 507.59375,518.53125 507.59375,469.5 309.5625,469.5z" />
                        </GeometryDrawing.Geometry>
                    </GeometryDrawing>
                </DrawingGroup>
            </DrawingGroup>
        </DrawingImage.Drawing>
    </DrawingImage>

1 个答案:

答案 0 :(得分:0)