private void saveButton_Click(object sender, EventArgs e) { if (renderTarget == null) { // Should not happen MessageBox.Show("Unable to save file."); return; } SaveFileDialog saveDlg = new SaveFileDialog(); saveDlg.Filter = "Bitmap image (*.bmp)|*.bmp|Png image (*.png)|*.png|Jpeg image (*.jpg)|*.jpg|Gif image (*.gif)|*.gif"; if (DialogResult.OK == saveDlg.ShowDialog()) { SizeU size = new SizeU((uint)ClientSize.Width, (uint)ClientSize.Height); ImagingBitmap wicBitmap = wicFactory.CreateImagingBitmap( size.Width, size.Height, PixelFormats.Bgr32Bpp, BitmapCreateCacheOption.CacheOnLoad); D2DBitmap d2dBitmap = renderTarget.CreateBitmap(size, new BitmapProperties(new PixelFormat(Microsoft.WindowsAPICodePack.DirectX.Graphics.Format.B8G8R8A8UNorm, AlphaMode.Ignore), renderTarget.Dpi.X, renderTarget.Dpi.Y)); d2dBitmap.CopyFromRenderTarget(renderTarget); RenderTarget wicRenderTarget = d2dFactory.CreateWicBitmapRenderTarget(wicBitmap, renderProps); wicRenderTarget.BeginDraw(); wicRenderTarget.DrawBitmap(d2dBitmap); wicRenderTarget.EndDraw(); Guid fileType; switch (saveDlg.FilterIndex) { case 1: fileType = ContainerFormats.Bmp; break; case 2: fileType = ContainerFormats.Png; break; case 3: fileType = ContainerFormats.Jpeg; break; case 4: fileType = ContainerFormats.Gif; break; default: fileType = ContainerFormats.Bmp; // default to bitmap files break; } wicBitmap.SaveToFile(wicFactory, fileType, saveDlg.FileName); } }