在wpf表单中单击按钮更改背景图像源

时间:2016-02-29 20:13:48

标签: c# wpf image

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

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

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

1 个答案:

答案 0 :(得分:2)

您可以使用AppDomain basepath to exe(这是最简单的方法)

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;
    }