在 wpf 窗体中单击按钮时更改背景图像源

本文关键字:背景 图像 按钮 wpf 窗体 单击 | 更新日期: 2023-09-27 18:36:57

我的默认背景图像是"lobby.jpg",当我单击"Lights"按钮时,我希望它与"lobby1.jpg"交换,反之亦然。这些图像存储在"obj'Debug'Images'" 中。

我还想实现相对(?)图像源 uris,以便我可以访问任何机器上的图像(不使用整个 uri,只需"obj'Debug'Images'")。

编辑:所以主要问题似乎是我尝试更改窗口背景,但没有意识到它被页面的网格背景"覆盖"。所以我所做的是将主窗口背景设置为"lobby.jpg",我使网格背景不可见,并使用答案中的代码在 2 个背景之间交换。

在 wpf 窗体中单击按钮时更改背景图像源

您可以使用 AppDomain basepath 来执行(这是最简单的方法)

var basePath= AppDomain.CurrentDomain.BaseDirectory;
var imageDirPath = $"{basePath}''Images''";

例:

  bool clicked = false;
    private void button_Click(object sender, RoutedEventArgs e)
    {
        var basePath = AppDomain.CurrentDomain.BaseDirectory;
        var imageDirPath = $"{basePath}''Images''";
        if (clicked)
            image.Source = new BitmapImage(new Uri(imageDirPath+ "lobby.jpg"));
        else
            image.Source = new BitmapImage(new Uri(imageDirPath + "lobby1.jpg"));
        clicked = !clicked;
    }