Exemplo n.º 1
0
        public static void ExportToPng(Uri path, InkCanvas Surface)
        {
            if (path == null) return;

            // Save current canvas transform
            Transform transform = Surface.LayoutTransform;
            // reset current transform (in case it is scaled or rotated)
            Surface.LayoutTransform = null;

            // Get the size of canvas
            Size size = new Size(Surface.ActualWidth, Surface.ActualHeight);
            // Measure and arrange the surface
            // VERY IMPORTANT
            Surface.Measure(size);
            Surface.Arrange(new Rect(size));

            // Create a render bitmap and push the surface to it
            RenderTargetBitmap renderBitmap =
              new RenderTargetBitmap(
                (int)size.Width,
                (int)size.Height,
                96d,
                96d,
                PixelFormats.Pbgra32);
            renderBitmap.Render(Surface);

            // Create a file stream for saving image
            using (FileStream outStream = new FileStream(path.LocalPath, FileMode.Create))
            {
                // Use png encoder for our data
                PngBitmapEncoder encoder = new PngBitmapEncoder();
                // push the rendered bitmap to it
                encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
                // save the data to the stream
                encoder.Save(outStream);
            }

            // Restore previously saved layout
            Surface.LayoutTransform = transform;
        }
Exemplo n.º 2
0
 protected override Size MeasureOverride(Size availableSize)
 {
     inkCanvas.Measure(availableSize);
     return(inkCanvas.DesiredSize);
 }
 private FrameworkElement cloneAll()
 {
     var clone = new InkCanvas();
     foreach (var stroke in stack.AllStrokes)
         clone.Strokes.Add(stroke.Clone());
     foreach (var child in stack.Work.Children)
     {
         var fe = (FrameworkElement)child;
         if (child is Image)
         {
             var image = (Image)child;
             var e = viewFor(image);
             Panel.SetZIndex(e, image.tag().author == Globals.me ? 3 : 1);
             clone.Children.Add(e);
         }
         else
         {
             var e = viewFor(fe);
             Panel.SetZIndex(e, 4);
             clone.Children.Add(e);
         }
     }
     var size = new Size(ActualWidth, ActualHeight);
     clone.Measure(size);
     clone.Arrange(new Rect(size));
     return clone;
 }