Microsoft .NET/WPF Tip
[WPF Tip] Canvas를 PNG로 저장하기
전자기린
2019. 4. 30. 17:35
Canvas를 PNG로 저장하기 위해서는 DPI 값이 필요합니다.
DPI는 모니터의 해상도 단위이며 1인치당 몇 개의 도트를 출력할 수 있는지를 말합니다.
DPI 구하는 방법은 하단 링크에서 설명합니다.
[C#] cm <-> pixel 변환, DPI 구하기
DPI 활용 방향 디스플레이에 출력되는 물체의 크기가 실제 크기와 동일해야 하는 경우 DPI를 사용하여 CM를 PIXEL로 변환하여 출력 C#에서 DPI 구하기 public class ScreenInformations { public static uint RawD..
VirtualGiraffe.co.kr
Canvas를 PNG로 저장하기 위해서는 아래와 같은 using 지시문을 추가해야합니다.
using System.IO;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
이제 사용 준비는 모두 끝났으니 Canvas에 도형등을 그리고 아래와 같이 PNG File로 저장합니다.
//Canvas의 출력 영역
Rect bounds = VisualTreeHelper.GetDescendantBounds(canvas);
//DPI
double dpi = Screen.ScreenInformations.RawDpi;
//시각적 개체를 비트맵으로 변환
RenderTargetBitmap renderBitmap = new RenderTargetBitmap
(
(int)bounds.Width,
(int)bounds.Height,
dpi,
dpi,
PixelFormats.Default
);
renderBitmap.Render(canvas);
//PNG File 저장
using (Stream stream = new FileStream(@"..\temp.png",
FileMode.Create,
FileAccess.Write,
FileShare.None))
{
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
encoder.Save(stream);
}