#699 – Converting an Image Control to a Bitmap
November 27, 2012 1 Comment
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));
}



























