如何在DrawingImage中更新颜色

6
我们的应用程序已经使用DrawingImage范例转换为使用矢量图片。我想把DrawingImage变量中的颜色/画笔设置为可变,并且一直无法成功实现。
为什么: 我这样做的原因是我们在应用程序中使用主题,当主题改变时,我想更改所有图像。从技术上讲,我只想更改颜色而不是图像。
我尝试过的方法: 我已经将颜色(我说颜色,因为图像中使用了不同类型的笔刷)声明为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>

是的,请提供一些代码示例。这对未来的访问者会很有帮助。 - wingerse
我不确定您想要看什么代码... 我猜我会发布一个DrawingImage的片段?如果您有任何建议,请发表。 - flyNflip
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接