从图像控件中读取图像源

时间:2015-03-18 04:07:33

标签: vb.net xaml windows-phone-8 image-processing

我可以按如下方式设置控件的图像源:

Dim photo As BitmapImage = New BitmapImage()
photo.SetSource(Application.GetResourceStream(New Uri("Assets/Photos/image.jpg", UriKind.Relative)).Stream)
Me.myImage.Source = photo

现在,我如何读取控件中显示的图像的源URL?我正在尝试这样的事情:

Dim source as String = Me.myImage.Source.GetValue(???)

但我收到的错误是“无法转换为system.windows.DependencyProperty'

此外,GetValue方法也可以给我图像的大小吗?

感谢。

2 个答案:

答案 0 :(得分:1)

如果你创建像

那样的BitmapImages
Dim photo As BitmapImage =
    New BitmapImage(New Uri("ms-appx:///Assets/Photos/image.jpg"))
myImage.Source = photo

稍后您将能够从BitmapImage的UriSource属性中获取URI:

Dim bitmap As BitmapImage = myImage.Source
Dim uri As Uri = bitmap.UriSource

编辑:如上所示创建BitmapImage相当于

Dim photo As BitmapImage = New BitmapImage()
photo.UriSource = New Uri("ms-appx:///Assets/Photos/image.jpg")

效果是UriSource属性已设置,稍后可以回读。正如您在问题中所做的那样,致电BitmapImage.SetSource将不会设置UriSource。这就是为什么它总是返回null

答案 1 :(得分:0)

Image.Source这里是BitmapImage(如果你不知道你只是把它设置为一个它也可能是其他ImageSource类型)。您可以检索它,然后检查其UriSource属性以获取Uri以及原始字符串:

Dim bmp As BitmapImage = myImage.Source
Dim uriSource As Uri = bmp.UriSource
Dim source As String = uriSource.OriginalString

System.Diagnostics.Debug.WriteLine("Source is {0}", source)

在一个非人为的例子中,你可能想把它放在一个try / catch块中,或者添加其他检查来处理myImage.Source不是BitmapImage或者BitmapImage不在的情况。 39;从URI加载。