use*_*830 2 c# events bitmapimage windows-runtime
为什么在此示例中未触发 ImageOpened 事件?我在 Win8 的 WinRT 应用程序中使用它。
BitmapImage myImage = new BitmapImage();
myImage.ImageOpened += myImage_ImageOpened;
myImage.UriSource = new Uri("ms-appx:/Assets/Image.png");
private void myImage_ImageOpened(object sender, RoutedEventArgs e)
{
int pixelHeight = (sender as BitmapImage).PixelHeight;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是 ImageOpened 事件没有被触发。我想检查图像的 PixelHeight 和 PixelWidth,但如果没有收到此事件,则无法检查。
WinRT 具有延迟加载行为。除非您实际显示图像,否则不会加载图像。如果您确实需要强制加载以执行一些布局调整,您可以使用这种解决方法来强制加载:
private async void Download()
{
Windows.UI.Xaml.Media.Imaging.BitmapImage image = new Windows.UI.Xaml.Media.Imaging.BitmapImage();
image.ImageFailed += image_ImageFailed;
image.ImageOpened += image_ImageOpened;
var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Logo.scale-100.png", UriKind.Absolute));
var stream = await file.OpenStreamForReadAsync();
await image.SetSourceAsync(stream.AsRandomAccessStream());
}
void image_ImageFailed(object sender, ExceptionRoutedEventArgs e)
{
MessageDialog dg = new MessageDialog("Image Failed");
dg.ShowAsync();
}
void image_ImageOpened(object sender, RoutedEventArgs e)
{
MessageDialog dg = new MessageDialog("Image Opened");
dg.ShowAsync();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1513 次 |
| 最近记录: |