我可以按如下方式设置控件的图像源:
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方法也可以给我图像的大小吗?
感谢。
答案 0 :(得分:1)
如果你创建像
那样的BitmapImagesDim 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加载。