我根据下拉框的选择更新图像控件的源代码。
在图像源代码更新后,我需要读取图像的实际宽度和高度。
我使用图像控件的Loaded事件成功地实现了这一点,但是每次更新源代码时,该事件显然不会触发。
是否有任何方法可以在每次更新源代码后获取加载到控件中的图像的实际大小?
我根据下拉框的选择更新图像控件的源代码。
在图像源代码更新后,我需要读取图像的实际宽度和高度。
我使用图像控件的Loaded事件成功地实现了这一点,但是每次更新源代码时,该事件显然不会触发。
是否有任何方法可以在每次更新源代码后获取加载到控件中的图像的实际大小?
你可以尝试使用图像源更新事件,但我并不总是能够成功使用它。
更好的解决方案,取决于你的源代码,是添加一个处理程序来处理它何时被加载。
你可以尝试像这样做:
Dim src As BitmapImage = New BitmapImage()
src.BeginInit()
src.UriSource = tURI
src.CacheOption = BitmapCacheOption.OnLoad
src.EndInit()
imgImage.SetCurrentValue(Image.SourceProperty, src)
AddHandler src.DownloadCompleted, AddressOf ImageDownloadCompleted
然后,您可以编写ImageDownloadCompleted的代码来获取图像的实际高度和宽度。
为了获得实际宽度,我使用源图像的宽度而不是图像控件,如下所示:
Sub ImageDownloadCompleted(sender As Object, e As System.EventArgs)
Dim src As BitmapImage
Dim dwidth as Double
Dim dheight as Double
src = DirectCast(sender, BitmapImage)
dwidth = src.Width
dheight = src.Height
RemoveHandler src.DownloadCompleted, AddressOf ImageDownloadCompleted
End Sub