Week3
这篇博客记录一下自己在图片路径走过的坑。
图片路径
在 UI 中显示图片,常用的是这两个控件: Image 和几何图形控件。有时候,我们需要获取图片的路径。对于这两个控件,获取路径都可能遇到一个问题: ImageSource 转换为 string。
Image控件
Image 控件是原生的展示图片的控件。对于 Image 控件,它有 Source 属性来存储其中图片的URI位置,类型为 ImageSource。我们可以将它拿到。这是第一次遇到这个问题。
几何图形控件
几何图形控件显示图片利用其 Fill 方法,将一个 ImageBrush 赋值给它,可以让其显示图片(但它的类型是 brush)。对于 brush,查阅官方文档可以看到,它没有任何属性或方法可以 get 到它的图层来源 URI。暂时推测,它的显示原理是将指定给它的 URI 渲染成图层之后,自动舍弃这个值。所以,如果使用如下 xaml 代码实现的图片显示,则无法获取其图片 URI。
1
2<!--xaml code-->
<Rectangle x:Name="Image"/>1
2
3
4
5//c# code
var brush = new ImageBrush {
ImageSource = new BitmapImage(new Uri("..."))
};
Image.Fill = brush;目前,我没有找到方法可以得到它的 URI。在经过问询之后,得到了如下的解决方案。
1
2
3
4
5
6<!--xaml code-->
<Rectangle>
<Rectangle.Fill>
<ImageBrush x:Name="Image">
</Rectangle.Fill>
</Rectangle>1
2//c# code
Image.ImageSource = new BitmapImage(new Uri("..."));我们给 ImageBrush 设置它的 ImageSource 属性,然后将这个 ImageBrush 赋值给 Fill,以此达到显示图片的效果。同时,我们还可以通过 Image 这个名字来获取它的 ImageSource。但是,又回到了原来的问题: 怎么将 ImageSource 转换为 string。
ImageSource 转成 string
在 Stack Overflow 上,查到了相关资料:
1 | string temp = (Image.ImageSource as BitmapImage).UriSource.OriginalString; |
这就解决了这个图片路径的问题。
(如果有其他方法,欢迎邮件,共同学习)