[Canvasの画像をファイルに保存するCanvasクラスの拡張メソッド] public static class CanvasExtension { /// [SaveImage]:Canvasの画像をファイルに保存するCanvasクラスの拡張メソッド /// 出典:http://qiita.com/hugo-sb/items/894914f6bbe224a45d49 /// /// /// 保存する画像ファイル名 /// BitmapEncoderが指定されなかった場合はPNG形式になる public static void SaveImage(this Canvas canvas, string path, BitmapEncoder encoder = null) { // レイアウトを再計算させる var size = new Size(canvas.ActualWidth, canvas.ActualHeight); canvas.Measure(size); canvas.Arrange(new Rect(size)); // VisualObjectをBitmapに変換する var renderBitmap = new RenderTargetBitmap((int)size.Width, // 画像の幅 (int)size.Height, // 画像の高さ 96.0d, // 横96.0DPI 96.0d, // 縦96.0DPI PixelFormats.Pbgra32); // 32bit(RGBA各8bit) renderBitmap.Render(canvas); // 出力用の FileStream を作成する using (var stream = new System.IO.FileStream(path, System.IO.FileMode.Create)) { // 変換したBitmapをエンコードしてFileStreamに保存する。 // BitmapEncoder が指定されなかった場合は、PNG形式とする。 encoder = encoder ?? new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(renderBitmap)); encoder.Save(stream); } }