我正在根据ComboBox选择更新图像控件的来源。
更新图像源后,我需要读取图像的ActualWidth和ActualHeight
我首次使用Image控件的Loaded事件打开对话框,但是每次更新Source时此事件都没有明显提升。
在每次Source更新后,有没有办法获得加载到控件中的图像的实际大小?
答案 0 :(得分:0)
您可以尝试使用图像sourceupdated事件,但我并不总是有运气使用它。
更好的解决方案,取决于您的来源,是为其加载时添加处理程序。
你可以尝试这样的事情: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