#699 – Converting an Image Control to a Bitmap
November 27, 2012 3 Comments
You may want to work with the image from an Image control as a standard Windows bitmap. You can convert the System.Windows.Controls.Image to a System.Drawing.Bitmap as follows (imgLife is an Image control):
private void Button_Click(object sender, RoutedEventArgs e) { RenderTargetBitmap rtBmp = new RenderTargetBitmap((int)imgLife.ActualWidth, (int)imgLife.ActualHeight, 96.0, 96.0, PixelFormats.Pbgra32); imgLife.Measure(new System.Windows.Size((int)imgLife.ActualWidth, (int)imgLife.ActualHeight)); imgLife.Arrange(new Rect(new System.Windows.Size((int)imgLife.ActualWidth, (int)imgLife.ActualHeight))); rtBmp.Render(imgLife); PngBitmapEncoder encoder = new PngBitmapEncoder(); MemoryStream stream = new MemoryStream(); encoder.Frames.Add(BitmapFrame.Create(rtBmp)); // Save to memory stream and create Bitamp from stream encoder.Save(stream); System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(stream); // Demonstrate that we can do something with the Bitmap bitmap.Save(@"D:\Temp\Life.png", ImageFormat.Png); // Optionally, if we didn't need Bitmap object, but // just wanted to render to file, we could: //encoder.Save(new FileStream(@"D:\Temp\Life-Other.png", FileMode.Create)); }