C# 在WPF中修改按钮的图片颜色
在WPF应用程序中,我插入了一个按钮,背景上有一个简单的图片:C# 在WPF中修改按钮的图片颜色,c#,wpf,xaml,shader,C#,Wpf,Xaml,Shader,在WPF应用程序中,我插入了一个按钮,背景上有一个简单的图片: <Button Grid.Column="2" BorderBrush="Transparent" HorizontalAlignment="Left" Height="20" Margin="15,0,0,0" VerticalAlignment="Center" Width="20"> <Button.Background> <ImageBrush ImageSource="D
<Button Grid.Column="2" BorderBrush="Transparent" HorizontalAlignment="Left" Height="20" Margin="15,0,0,0" VerticalAlignment="Center" Width="20">
<Button.Background>
<ImageBrush ImageSource="Divalto_Rechercher_25px.png" Stretch="Uniform"></ImageBrush>
</Button.Background>
</Button>
我想,鼠标悬停,变换图片的颜色
以下是鼠标退出时的图片:
当鼠标结束时,我想要这样的东西:
我想动态地这样做(动态地变换图片的颜色)
下面是一个尝试,但不完整:
<Button Grid.Column="2" BorderBrush="Transparent" HorizontalAlignment="Left" Height="20" Margin="15,0,0,0" VerticalAlignment="Center" Width="20">
<Button.Background>
<ImageBrush ImageSource="appbar.feature.search.rest.png" Stretch="Uniform"></ImageBrush>
</Button.Background>
<EventTrigger RoutedEvent="Button.MouseEnter">
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetName="AnimBrush"
Storyboard.TargetProperty="(SolidColorBrush.Color)"
From="Red" To="Green" Duration="0:0:5"
AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button>
有人能帮我吗
非常感谢
致以最诚挚的问候,为什么不将按钮内容设置为您想要的图像?这可能是最简单的方法。然后,您可以只更改鼠标事件
如果您的图像仅为白色放大镜,而图像的其余部分是透明的,则应将按钮内容设置为图像,并将背景设置为所需颜色(橙色或黑色)听起来您需要在XAML中添加情节提要。如果你有一个透明的图像,为什么不简单地改变按钮的填充颜色呢 我还没有测试下面的代码,但它可以作为跳板使用
<EventTrigger RoutedEvent="Button.MouseOver">
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetName="AnimBrush"
Storyboard.TargetProperty="(SolidColorBrush.Color)"
From="Red" To="Green" Duration="0:0:5"
AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
您只需将
内容创建为边框
,内部带有图像
,并使用触发器或动画
更改边框
背景
。如果您只想显示图像样式,最好覆盖按钮
模板,否则鼠标悬停时将获得Buuttons焦点样式
例如:
<Button BorderBrush="Transparent" HorizontalAlignment="Left" Height="50" Margin="12,24,0,238" VerticalAlignment="Center" Width="51">
<Button.Content>
<Border CornerRadius="5">
<Image Margin="3" Source="http://icons.iconarchive.com/icons/custom-icon-design/mini/32/Search-icon.png" Stretch="Uniform" />
<Border.Style>
<Style TargetType="{x:Type Border}">
<Setter Property="Background" Value="LimeGreen" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
</Button.Content>
<Button.Style>
<Style TargetType="{x:Type Button}" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}" >
<ContentPresenter />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Button.Style>
</Button>
结果:
正常鼠标悬停因为我可以通过编程更改颜色!这就是为什么我想变换我的图片:)如果你只想改变颜色,那么你必须通过WPF绘图来创建图像…除非图像只是放大镜,其余部分是透明的?Interresant!假设我的放大镜其余部分是透明的,我如何动态添加黑色和橙色?我刚刚更新了我的答案,以反映您需要做的事情是的,但我如何更改我的透明图片上的颜色请:)?谢谢:)我试着使用此代码,但颜色没有改变。我用我的代码编辑了第一篇文章,你能看一下吗?谢谢:)