C#/XAML - 字符串到图像源的转换

Posted

技术标签:

【中文标题】C#/XAML - 字符串到图像源的转换【英文标题】:C#/XAML - String to Image Source Conversion 【发布时间】:2017-06-15 03:13:12 【问题描述】:

希望我能就我遇到的问题获得一些意见。首先,我将解释我确实尝试了其他与我所遇到的问题相似的问题答案的建议,但没有任何运气。

目标是获取一个字符串并将其转换为我的 XAML 代码中图像元素的路径。类似于如何在代码隐藏文件中调整文本块的“文本”属性,

courseFaculty.Text = BL_PageContent.FacultyMember;

FacultyMember 是关联的 BL_PageContent.cs 文件中的一个属性,我想做同样的事情,但为图像的路径提供一个字符串。

这是我的图片的 XAML,如果您愿意,它会呈现一个空白的“占位符”:

<Image x:Name="courseFacultyPic" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="246,127,10,0" Height="117" Width="104"></Image>

更多地“手动”测试这个,我已将源路径作为 Source 属性输入并取得了成功:

<Image x:Name="courseFacultyPic" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="246,127,10,0" Height="117" Width="104" Source="facultyProf1.jpg"></Image>

使用向我建议的东西应该将我想要的图像渲染到这个“占位符”中:

string facultyPicPath = "collegeProf1.jpeg";
Uri imageUri = new Uri(facultyPicPath);
BitmapImage facultyImage = new BitmapImage(imageUri);
Image courseFacultyPic = new Image();
courseFacultyPic.Source = facultyImage;

上面的这个代码块会从用户点击一个 UI 控件开始。但是,当我尝试它时,我得到一个关于我实例化 Uri 类的行的运行时异常。运行时异常如下:

“System.UriFormatException”类型的异常发生在 System.Private.Uri.dll 但未在用户代码中处理 附加信息:无效的 URI:无法使用 URI 的格式 确定。

欢迎提出任何想法/建议/意见。这是我的第一篇文章,也是我第一次在我的应用程序中处理图像的经验,并且是自学的,所以请考虑到这一点。非常感谢!

【问题讨论】:

你可能会喜欢这个***.com/questions/15580855/… 您是否尝试过使用 Uri 构造函数重载 Uri(string, UriKind) 并将其设置为 UriKind.Relative 这次我尝试了一个不同的运行时异常,它与我的 Uri 实例下方的 BitmapImage 实例有关: > mscorlib.ni 中发生了“System.ArgumentException”类型的异常。 dll 但未在用户代码中处理 > 附加信息:给定的 System.Uri 无法转换 > 为 Windows.Foundation.Uri。 【参考方案1】:

这是因为 XAML 已内置转换器来获取类似的图像名称并将其设置为图像源。当你使用 new BitmapImage(imageUri) 时,你应该指定完整的图像路径。

如果您使用的是 WPF,则可以使用 ImageSourceConverter,但我认为这不适用于 UWP 应用。我不确定……但是;自己写一次并不难。

https://msdn.microsoft.com/en-us/library/system.windows.media.imagesourceconverter.convertfromstring(v=vs.110).aspx

【讨论】:

【参考方案2】:

我也遇到过这个错误。解决方案是您必须手动指定那是什么类型的 URI。根据我的经验,假设您已将图像添加到与应用程序源代码文件位于同一目录的项目中,您必须指定的 URI 类型为 @987654321@.Relative

Uri 构造函数中,在第二个参数中指定它,如下所示:

Uri imageUri = new Uri(facultyPicPath, UriKind.Relative);

【讨论】:

这次我尝试了一个不同的运行时异常,它与我的 Uri 实例下方的 BitmapImage 实例有关: > mscorlib.ni 中发生了“System.ArgumentException”类型的异常。 dll 但未在用户代码中处理 > 附加信息:给定的 System.Uri 无法转换 > 为 Windows.Foundation.Uri。 你可以看看this。尽管该人正在开发 Windows 8 应用商店应用程序,但也许它也适用于您的情况。 这就是票!谢谢,我的朋友..这完成了我所需要的。干杯!【参考方案3】:

这是我的问题的解决方案。感谢Rizki!

The given System.Uri cannot be converted into a Windows.Foundation.Uri

【讨论】:

以上是关于C#/XAML - 字符串到图像源的转换的主要内容,如果未能解决你的问题,请参考以下文章

C#/XAML 将图像添加到按钮

有没有办法在 XAML 中链接多个值转换器?

带转换器的多重绑定中的 XAML 字符串格式

XAML String转换为RowDefinitions和ColumnDefinitions?

xamarin表单 - 使用c#计算出图像源的尺寸

如何在C#中从数据库中检索时将varBinary转换为图像或视频