Beschreibung:
Erstellt von einem Canvas mit all seinen Childs ein System.Windows.Controls.Image
/// <summary>
/// Konvertiert einen WPF Canvas zu einem Bild
/// </summary>
/// <param name="canvas">Canvas der konvertiert werden soll</param>
/// <returns>Bild vom Canvas</returns>
public static System.Windows.Controls.Image convertCanvasToImage(System.Windows.Controls.Canvas canvas)
{
if(canvas == null)
throw new ArgumentNullException("canvas", "Canvas darf nicht null sein.");
Transform transform = canvas.LayoutTransform;
canvas.LayoutTransform = null;
System.Windows.Size size = new System.Windows.Size(canvas.Width, canvas.Height);
canvas.Measure(size);
canvas.Arrange(new System.Windows.Rect(size));
RenderTargetBitmap renderBitmap = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96d, 96d, System.Windows.Media.PixelFormats.Pbgra32); renderBitmap.Render(canvas);
BmpBitmapEncoder encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
MemoryStream ms = new MemoryStream();
encoder.Save(ms);
ms.Position = 0;
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = ms;
bi.EndInit();
canvas.LayoutTransform = transform;
System.Windows.Controls.Image image = new System.Windows.Controls.Image();
image.Source = bi;
return image;
}
Schlagwörter: Canvas, Image