wpf - 使用图像作为 WPF 按钮图标蒙版?

标签 wpf icons

我想知道是否可以执行以下操作:

  • 创建一个黑白图像,比如一只狗
  • 将图像作为蒙版添加到按钮
  • 使用(数据)触发器更改样式,例如禁用 - 狗为灰色,“加载中” - 狗为红色,“准备好”狗为黄色,等等

  • 基本上我想使用像素创建按钮图标,但能够在运行时根据触发器设置颜色。像这样的东西:

    dog buttons

    最佳答案

    经过 2 小时的谷歌搜索,这里是答案

    <Window x:Class="IconTest.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <!-- button style -->
            <Style x:Key="ToolButton" TargetType="Button">
                <Setter Property="OverridesDefaultStyle" Value="True"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="Button">
                            <Border Width="16" Height="16" Background="#ffbbbbbb">
                                <Rectangle Name="rect" Fill="Black" OpacityMask="{TemplateBinding Content}"/>
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter TargetName="rect" Property="Fill" Value="Green" />
                                </Trigger>
                                <Trigger Property="IsPressed" Value="True">
                                    <Setter TargetName="rect" Property="Fill" Value="Yellow" />
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
    
        </Window.Resources>
        <Grid>
            <Button Width="16" Height="16" Style="{StaticResource ToolButton}">
                <ImageBrush ImageSource="/test.png"/>
            </Button>
        </Grid>
    </Window>
    

    关于wpf - 使用图像作为 WPF 按钮图标蒙版?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5789745/

    相关文章:

    c - 如何更改C语言程序的默认图标?

    c# - 使用 MVVM 在 WPF DataGrid 中自定义排序

    c# - DateTimePicker OnValueChanged 事件引发两次

    java - 构建项目时不显示 Netbeans JLabel 图标/文本

    ios - XCode 5 支持 iOS 5.0 图标

    javascript - 在按钮内渲染 SVG 图标?

    c++ - 无需重新编译或重新链接并使用 Microsoft SDK 中的命令行工具即可更改可执行文件的图标

    wpf - 在 DataGrid 控件中自定义自动生成的列

    wpf - 如何在 xaml 中填充 wpf 组合框

    wpf - XamlReader 生成 DataTemplate 的问题