按钮图像更改

时间:2012-06-17 06:45:23

标签: c# wpf

每次用户按下按钮时,我都想更改按钮的背景图像。 我已将ImageSource设置为我的图片。当鼠标悬停在按钮上时,我的按钮不会显示图像。如何设置图片,以便即使鼠标悬停在按钮上仍然带有图像?

        <Button x:Name="recordButton" Content="" HorizontalAlignment="Left" Height="50" Margin="60,45,0,0" VerticalAlignment="Top" Width="50" Click="recordButton_Click">
        <Button.Background>
            <ImageBrush ImageSource="play.png"/>
        </Button.Background>
    </Button>

另一个问题。如何改变这两张照片? 他们的名字是“play.png”和“stop.png”,两者都位于参考资料中。

        private bool recordStarted = false;

    private void recordButton_Click(object sender, RoutedEventArgs e)
    {
        recordStarted = !recordStarted;


        if(recordStarted)
        {
            ImageBrush brush1 = new ImageBrush();
            BitmapImage image = Properties.Resources.stop;
            brush1.ImageSource = image;
            recordButton.Background = brush1;

        }
    }

我试过了,但VS找不到BitmapImage image = Properties.Resources.stop; 求救!

2 个答案:

答案 0 :(得分:1)

我建议不要将背景设置为图像,而是将内容设置为图像

<Button x:Name="recordButton" HorizontalAlignment="Left" Height="50" Margin="60,45,0,0" VerticalAlignment="Top" Width="50" Click="recordButton_Click">
    <Image Source="play.png"/>
</Button>

如果要更改图像,可以在文本中执行此操作,最简单的方法是使用编译为资源的图像而不是资源文件中的图像

(recordButton.Content as Image).Source = new BitmapImage(new Uri("Images/stop.png", UriKind.Relative));

如果您想使用资源文件,请参阅此SO post

答案 1 :(得分:0)

有一些方法可以更改图片:

  1. 重新定义按钮控件模板并使用VisualStateManager

  2. 重新定义控件模板并使用Trigger s。

  3. 您可以尝试将按钮的内容绑定到它的MouseOver属性:当鼠标悬停时隐藏一个图像并显示另一个图像。