WPF窗口背景图片URI格式错误:报错‘Invalid URI’如何解决?
解决WPF设置背景图片时的URI格式错误问题
嘿,这个坑我之前踩过!你遇到的「Invalid URI: The format of the URI could not be determined」错误,核心原因是URI类型和路径写法不匹配——你指定了UriKind.Absolute(绝对URI),但传入的却是相对路径的格式,系统自然没法解析。
下面给你两种靠谱的解决思路:
方案一:使用相对路径(更简单)
因为你的图片已经放在程序运行目录(bin\debug)下的StoredData文件夹里,直接用相对路径即可,同时把UriKind改成Relative或者省略(默认是RelativeOrAbsolute):
InitializeComponent(); ImageBrush myBrush = new ImageBrush(); // 注意去掉开头的反斜杠,直接写相对路径 myBrush.ImageSource = new BitmapImage(new Uri("StoredData/login_wallpaper.jpg", UriKind.Relative)); this.Background = myBrush;
方案二:构造完整绝对路径(更稳妥)
如果你一定要用绝对URI,需要先获取程序当前的运行目录,再拼接图片的完整路径,避免路径硬编码的问题:
InitializeComponent(); ImageBrush myBrush = new ImageBrush(); // 获取程序运行的根目录(也就是bin\debug) string appDir = System.AppDomain.CurrentDomain.BaseDirectory; // 拼接图片的完整路径,推荐用Path.Combine避免路径分隔符的问题 string imageFullPath = System.IO.Path.Combine(appDir, "StoredData", "login_wallpaper.jpg"); // 用绝对URI加载图片 myBrush.ImageSource = new BitmapImage(new Uri(imageFullPath, UriKind.Absolute)); this.Background = myBrush;
关键提醒!
别忘了检查图片文件的复制到输出目录属性:右键图片文件→属性→复制到输出目录,选择「如果较新则复制」或者「始终复制」。否则图片不会被自动复制到bin\debug\StoredData文件夹里,就算路径写对了也找不到图片哦!
内容的提问来源于stack exchange,提问作者user9536923
相关产品推荐
相关产品推荐

