【问题标题】:Change Image at Runtime Based On RadioButton Selection基于单选按钮选择在运行时更改图像
【发布时间】:2013-03-22 17:30:11
【问题描述】:

我需要在运行时更改背景图像,基于该背景图像RadioButton 用户单击。我在 Visual Studio 的 WPF 项目中执行此操作,我需要将代码放在 xaml.cs 文件中的 Checked 事件中

我有一个名为 imgBackground 的图像控件,它的源集合中有 6 个图像,这些图像列在解决方案资源管理器的图像文件夹中。

我试过了:

this.imgBackground.Source = "filename.jpg";

带引号和不带引号,以及各种路径(我尝试了太多不同的变体,无法在此处全部列出)并且没有任何效果 - 我尝试的所有内容都在编辑器中出现错误,甚至在我尝试之前构建和运行任何东西(给出的错误取决于我当时尝试的内容)。

【问题讨论】:

  • 那么,什么不起作用。切换或显示任何图像?您可以使用设计器+属性来选择图像。然后看源码。
  • 抱歉,我应该更清楚一点 - 我什至在尝试构建和运行任何东西之前就在编辑器中得到了错误。我已经编辑了原始帖子以反映这一点。谢谢! :-)
  • 显示 1 次尝试并发布错误消息
  • 您遇到什么错误?它说什么???
  • 从我的示例中得到的错误是“无法将类型'string'隐式转换为'System.Windows.Media.ImageSource'”

标签: c# wpf xaml imagesource


【解决方案1】:

如果您使用相对路径作为文件名,例如

this.imgBackground.Source = "filename.jpg";

那么这些文件必须与您的程序的 .exe 位于同一目录中。 一种解决方法是使用绝对路径,例如

this.imgBackground.Source = @"C:\MyFolder\MyProject\filename.jpg";

或者,甚至进一步使用 WPF 的打包机制或将您的图像作为资源打包到您的程序集中。看this线程。

编辑:

为了您的澄清:

Source-property 需要 System.Windows.Media.ImageSource-object,您必须提供该对象。 这样做:

BitmapImage bi3 = new BitmapImage();
bi3.BeginInit();
bi3.UriSource = new Uri("filename.jpg", UriKind.Relative);
bi3.EndInit();
this.imgBackground.Source = bi3;

请参阅此处的this 文档。

【讨论】:

  • 它们位于项目的图像文件夹中。我该如何从那里访问它们?我应该澄清(并且我已经编辑了原始帖子以反映这一点)它甚至不在 .exe 阶段 - 我什至在尝试构建和运行任何东西之前就在编辑器中遇到错误。
  • 因此,您需要指定图像的路径。如果有图片文件夹,请使用this.imgBackground.Source = @"images\filename.jpg";
  • @Erica,需要注意的一件事是,即使它们在您的 images 文件夹中,您的程序也会在运行时查看与二进制文件夹相关的内容(即,它将查看 bin/images 而不是 projectdir /图片)。您可以通过右键单击 Visual Studio 中的图像来解决此问题,单击“属性”并将“复制到输出目录”设置为 true。这将确保您每次构建时都将它们复制到 bin/images 中。
  • @bash.d - 我尝试了你的建议,this.imgBackground.Source = @"images\filename.jpg";但它给出了错误消息“无法将类型'string'隐式转换为'System.Windows.Media.ImageSource' - 我错过了什么?
  • 啊,好吧...现在我明白了!
猜你喜欢
  • 1970-01-01
  • 2018-10-11
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-09
  • 2015-01-18
相关资源
最近更新 更多