将图像从资源加载到图像控件
Loading image from resource to image control
我有一个包含一些图像的文件夹结构,因为我正在尝试使用 C#(不是 xaml)在我的代码背景中加载和更改。
我运气不好,要么抛出异常,要么预加载的图像在应该更改时变得不可见。我在这里尝试了各种问题的代码示例,但我仍然没有运气。
文件夹结构 -> Resources/Images/Themes/{mytheme}.png
构建操作 -> 资源
(也都已作为资源添加到 resources.resx)
我目前的代码是..
var themeImage = new BitmapImage();
var filename = string.Format("{0}{1}.png", cmbBaseThemes.SelectedValue.ToString(), cmbAccentColors.SelectedValue.ToString());
themeImage.BeginInit();
themeImage.UriSource = new Uri(@"/ZApp;component/Resources/Images/Themes/" + filename, UriKind.RelativeOrAbsolute);
themeImage.EndInit();
imgThemeStyle.Source = themeImage;
但是这段代码总是给我异常"Cannot locate resource 'resources/images/themes/lightindigo.png'."
您可能在创建时遗漏了一些参数。
试试这个方法:
img = new BitmapImage();
img.BeginInit();
img.CacheOption = BitmapCacheOption.OnLoad;
img.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
img.UriSource = new Uri(@"/ZApp;component/Resources/Images/Themes/" + filename, UriKind.RelativeOrAbsolute);
img.EndInit();
在后面的代码中,您必须使用完全限定的 Resource File Pack Uri
themeImage.UriSource = new Uri(
"pack://application:,,,/ZApp;component/Resources/Images/Themes/" + filename);
您也可以通过使用带有 Uri
参数的 BitmapImage
构造函数来避免 BeginInit
/EndInit
调用:
imgThemeStyle.Source = new BitmapImage(new Uri(
"pack://application:,,,/ZApp;component/Resources/Images/Themes/" + filename));
您是否尝试过更改 Uri 的格式?也许尝试打包 Uri? https://msdn.microsoft.com/en-us/library/vstudio/aa970069(v=vs.100).aspx
我有一个包含一些图像的文件夹结构,因为我正在尝试使用 C#(不是 xaml)在我的代码背景中加载和更改。
我运气不好,要么抛出异常,要么预加载的图像在应该更改时变得不可见。我在这里尝试了各种问题的代码示例,但我仍然没有运气。
文件夹结构 -> Resources/Images/Themes/{mytheme}.png
构建操作 -> 资源
(也都已作为资源添加到 resources.resx)
我目前的代码是..
var themeImage = new BitmapImage();
var filename = string.Format("{0}{1}.png", cmbBaseThemes.SelectedValue.ToString(), cmbAccentColors.SelectedValue.ToString());
themeImage.BeginInit();
themeImage.UriSource = new Uri(@"/ZApp;component/Resources/Images/Themes/" + filename, UriKind.RelativeOrAbsolute);
themeImage.EndInit();
imgThemeStyle.Source = themeImage;
但是这段代码总是给我异常"Cannot locate resource 'resources/images/themes/lightindigo.png'."
您可能在创建时遗漏了一些参数。
试试这个方法:
img = new BitmapImage();
img.BeginInit();
img.CacheOption = BitmapCacheOption.OnLoad;
img.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
img.UriSource = new Uri(@"/ZApp;component/Resources/Images/Themes/" + filename, UriKind.RelativeOrAbsolute);
img.EndInit();
在后面的代码中,您必须使用完全限定的 Resource File Pack Uri
themeImage.UriSource = new Uri(
"pack://application:,,,/ZApp;component/Resources/Images/Themes/" + filename);
您也可以通过使用带有 Uri
参数的 BitmapImage
构造函数来避免 BeginInit
/EndInit
调用:
imgThemeStyle.Source = new BitmapImage(new Uri(
"pack://application:,,,/ZApp;component/Resources/Images/Themes/" + filename));
您是否尝试过更改 Uri 的格式?也许尝试打包 Uri? https://msdn.microsoft.com/en-us/library/vstudio/aa970069(v=vs.100).aspx