コード例 #1
0
        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();
        }
コード例 #2
0
        private void Control_Unloaded(object sender, RoutedEventArgs e)
        {
            IOGraph.RemoveFromVisualTree();
            ImageVirtualControl.RemoveFromVisualTree();

            IOGraph             = null;
            ImageVirtualControl = null;
        }
コード例 #3
0
 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);
             }
         }
     }
 }