none
WPF中Grid容器设置背景画刷问题,无法设置相对路径 RRS feed

  • 问题

  • 请看下面代码:

    ImageBrush imgBrush = new ImageBrush
    {
    	ImageSource = new BitmapImage(
    	new Uri("Imgs/DeskOpen.png", UriKind.Relative))
    };
    MainGrid.Background = imgBrush;

    该程序在调试时出现中断错误:

    System.IO.DirectoryNotFoundException:“未能找到路径“C:\Users\GUO\Desktop\***\***\bin\Debug\Imgs\DeskOpen.png”的一部分。”

    当我使用绝对路径时就不会发生此错误

    2018年12月2日 1:49

答案

  • Hi   BeTheBest,

    我想在你的WPF应用程序中,您应该是将图像文件作为常规文件添加到Visual Studio项目中,比如可以在名为“Images”的文件夹中添加。 然后,您将“Build Action”设置为“Resource”,这将在“Properties”窗口中完成。 

    为了从代码访问这些图像资源,我们可以使用Pack URI。 比如使用文件夹名称“images”和名为“bac.jpg”的图像文件,创建这样的URI将如下所示:

    new Uri("pack://application:,,,/images/bac.jpg", UriKind.RelativeOrAbsolute);
    
                var uri = new Uri("pack://application:,,,/images/bac.jpg", UriKind.RelativeOrAbsolute);
                ImageBrush imgBrush = new ImageBrush
                {
                    ImageSource = new BitmapImage(uri)
                };
                
                MainGrid.Background = imgBrush;
    
    WPF 中的 Pack URI:


    Best Regards,

    Yong Lu



    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 BeTheBest 2019年1月5日 11:35
    2018年12月4日 6:16
    版主