private async Task LoadVirtualBitmap() { if (virtualBitmap != null) { virtualBitmap.Dispose(); virtualBitmap = null; } LoadedImageInfo = ""; NotifyBitmapChanged(); virtualBitmap = await CanvasVirtualBitmap.LoadAsync(ImageVirtualControl.Device, imageStream, virtualBitmapOptions); if (ImageVirtualControl == null) { // This can happen if the page is unloaded while LoadAsync is running return; } var size = virtualBitmap.Size; ImageVirtualControl.Width = size.Width; ImageVirtualControl.Height = size.Height; ImageVirtualControl.Invalidate(); LoadedImageInfo = string.Format("{0}x{1} image, is {2}CachedOnDemand", size.Width, size.Height, virtualBitmap.IsCachedOnDemand ? "" : "not "); NotifyBitmapChanged(); }
private void Control_Unloaded(object sender, RoutedEventArgs e) { IOGraph.RemoveFromVisualTree(); ImageVirtualControl.RemoveFromVisualTree(); IOGraph = null; ImageVirtualControl = null; }
private void ImageVirtualControl_RegionsInvalidated(CanvasVirtualControl sender, CanvasRegionsInvalidatedEventArgs args) { foreach (var region in args.InvalidatedRegions) { using (var ds = ImageVirtualControl.CreateDrawingSession(region)) { if (virtualBitmap != null) { ds.DrawImage(virtualBitmap, region, region); } } } }