Advertisement
pushpraj

Dispatcher.BeginInvoke instead of Thread

Sep 21st, 2014
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.66 KB | None | 0 0
  1.         void Canvas_MouseUp(object sender, MouseEventArgs e)
  2.         {
  3.             leftMouseDown = false;
  4.  
  5.             var curLayer = GetItemsPanel((canvasDataBinding.ItemContainerGenerator.ContainerFromIndex(0)));
  6.             exportToImage(curLayer.ActualWidth, curLayer.ActualHeight, curLayer);
  7.             //Thread RASTERIZE_THREAD = new Thread(new ThreadStart(() => { exportToImage(curLayer.ActualWidth, curLayer.ActualHeight, curLayer); }));
  8.             //RASTERIZE_THREAD.Start();
  9.         }
  10.  
  11.         ...
  12.  
  13.         void exportToImage(double width, double height, Visual visual)
  14.         {
  15.             var filename = string.Format(@"{0}.png", Guid.NewGuid());
  16.             var tempFile = Path.Combine(tempDir, filename);
  17.             Rect rect = new Rect(0, 0, width, height);
  18.  
  19.             this.Dispatcher.BeginInvoke(new Action(() =>
  20.             {
  21.                 RenderTargetBitmap rtb = new RenderTargetBitmap((int)rect.Right,
  22.                 (int)rect.Bottom, 96d, 96d, System.Windows.Media.PixelFormats.Default);
  23.                 rtb.Render(visual);
  24.                 //endcode as PNG
  25.                 BitmapEncoder pngEncoder = new PngBitmapEncoder();
  26.                 pngEncoder.Frames.Add(BitmapFrame.Create(rtb));
  27.  
  28.                 //save to memory stream
  29.                 System.IO.MemoryStream ms = new System.IO.MemoryStream();
  30.  
  31.                 pngEncoder.Save(ms);
  32.                 ms.Close();
  33.                 System.IO.File.WriteAllBytes(tempFile, ms.ToArray());
  34.                 updateCanvas(tempFile);
  35.                 this.Title = "images in canvas after rasterizing: " + canvasImages[0].Count;
  36.             }), DispatcherPriority.Background);
  37.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement