如何为图像驻留在应用程序文件夹中的图像控件设置源
How to set source for Image Control where the image resides in application folder
我正在使用图像控件。我正在为图像控件设置源,如下所示。
但是错误显示无效的 URI。
string strUri = String.Format(@"..\..\Assets\Images\Image001.jpeg");
previewImage.Source = BitmapFromUri(new Uri(strUri));
public static ImageSource BitmapFromUri(Uri source)
{
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = source;
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.EndInit();
return bitmap;
}
您必须通过设置 UriKind.Relative
:
来指定它是一个相对 URI
var uri = new Uri(@"..\..\Assets\Images\Image001.jpeg", UriKind.Relative);
也就是说,您的 BitmapFromUri
方法可能是多余的(除非您有理由设置 BitmapCacheOption.OnLoad
)。您也可以使用带有 Uri 参数的 BitmapImage 构造函数:
previewImage.Source = new BitmapImage(uri);
另请注意,以上假设图像文件实际复制到指定的相对路径。如果它是您的 Visual Studio 项目的一部分,它可能更好地通过 WPF Pack URI 作为嵌入式资源加载。因此,您必须将其 Build Action
设置为 Resource
.
我正在使用图像控件。我正在为图像控件设置源,如下所示。
但是错误显示无效的 URI。
string strUri = String.Format(@"..\..\Assets\Images\Image001.jpeg");
previewImage.Source = BitmapFromUri(new Uri(strUri));
public static ImageSource BitmapFromUri(Uri source)
{
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = source;
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.EndInit();
return bitmap;
}
您必须通过设置 UriKind.Relative
:
var uri = new Uri(@"..\..\Assets\Images\Image001.jpeg", UriKind.Relative);
也就是说,您的 BitmapFromUri
方法可能是多余的(除非您有理由设置 BitmapCacheOption.OnLoad
)。您也可以使用带有 Uri 参数的 BitmapImage 构造函数:
previewImage.Source = new BitmapImage(uri);
另请注意,以上假设图像文件实际复制到指定的相对路径。如果它是您的 Visual Studio 项目的一部分,它可能更好地通过 WPF Pack URI 作为嵌入式资源加载。因此,您必须将其 Build Action
设置为 Resource
.