在wpf中使用DynamicResource绘制图像

f45qwnt8  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(135)

我在字典中有多个DrawingImages。我也有这些影像的IconAccentBrush。我想要动态变更绘图影像中的色彩。我有变更IconAccentBrush的滑杆。
我想用一个键引用我的DrawingImage。
如果我不引用DrawingGroup,它的颜色将改变,但如果我从其他项目引用它,它不会改变。
你能帮忙吗?
谢谢你,奥利维尔
图标会出现,但颜色不会改变的示例:

<Application
    x:Class="App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
....
                <ResourceDictionary Source="pack://application:,,,/ResourcesWpf;component/Dictionaries/ImageDictionary.xaml" />
....
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

----------------------------------------------------------
//this is ImageDictionary.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DrawingGroup x:Key="PushPinActiveDrawingGroup"  ClipGeometry="M-19,1 V512.9995 H492 V-19 H1 Z">
            <DrawingGroup.Transform>
                <TranslateTransform X="19" Y="-0.00097703933715820313" />
            </DrawingGroup.Transform>
            <GeometryDrawing Brush="{DynamicResource IconAccentBrush}" Geometry="{StaticResource ApplyColorGeometry1}" />
            <GeometryDrawing Brush="{DynamicResource IconAccentBrush}" Geometry="{StaticResource ApplyColorGeometry2}" />
            <GeometryDrawing Brush="{DynamicResource IconAccentBrush}" Geometry="{StaticResource ApplyColorGeometry3}" />
            <GeometryDrawing Brush="{DynamicResource IconAccentBrush}" Geometry="{StaticResource ApplyColorGeometry4}" />
            <GeometryDrawing Brush="{DynamicResource IconAccentBrush}" Geometry="{StaticResource ApplyColorGeometry5}" />
            <GeometryDrawing Brush="{DynamicResource IconAccentBrush}" Geometry="{StaticResource ApplyColorGeometry6}" />
</DrawingGroup>
</ResourceDictionary>

----------------------------------------------------------

<ToggleButton  Margin="{StaticResource MainThickness}" IsChecked="{Binding IsPinned}">
    <Image>
        <Image.Source>
            <DrawingImage Drawing="{DynamicResource PushPinActiveDrawingGroup}"/>
        </Image.Source>
    </Image>
</ToggleButton>

图标会出现,但颜色会改变的示例:

<ToggleButton Margin="{StaticResource MainThickness}" IsChecked="{Binding IsPinned}">
    <Image>
        <Image.Source>
            <DrawingImage>
                <DrawingImage.Drawing>
                    <DrawingGroup ClipGeometry="M-19,1 V512.9995 H492 V-19 H1 Z">
                        <DrawingGroup.Transform>
                            <TranslateTransform X="19" Y="-0.00097703933715820313" />
                        </DrawingGroup.Transform>
                        <GeometryDrawing Brush="{DynamicResource IconAccentBrush}" Geometry="{StaticResource ApplyColorGeometry1}" />
                        <GeometryDrawing Brush="{DynamicResource IconAccentBrush}" Geometry="{StaticResource ApplyColorGeometry2}" />
                        <GeometryDrawing Brush="{DynamicResource IconAccentBrush}" Geometry="{StaticResource ApplyColorGeometry3}" />
                        <GeometryDrawing Brush="{DynamicResource IconAccentBrush}" Geometry="{StaticResource ApplyColorGeometry4}" />
                        <GeometryDrawing Brush="{DynamicResource IconAccentBrush}" Geometry="{StaticResource ApplyColorGeometry5}" />
                        <GeometryDrawing Brush="{DynamicResource IconAccentBrush}" Geometry="{StaticResource ApplyColorGeometry6}" />
                    </DrawingGroup>
                </DrawingImage.Drawing>
            </DrawingImage>
        </Image.Source>
    </Image>
</ToggleButton>
lg40wkob

lg40wkob1#

我设法通过更改图像样式中的源来更改图标的颜色。
解决方案如下:

<ToggleButton Margin="{StaticResource MainThickness}" IsChecked="{Binding IsPinned}">
    <Image>
        <Image.Style>
            <Style TargetType="{x:Type Image}">
                <Setter Property="Source" Value="{StaticResource PushPinActiveDrawingImage}" />
            </Style>
        </Image.Style>
    </Image>
</ToggleButton>

相关问题