본문 바로가기
Dev/WPF

WPF 프린트를 이미지로 저장

by wenect 2023. 7. 1.

WPF에서 시각적 요소를 이미지로 출력하는 방법은 다음과 같습니다:

  1. RenderTargetBitmap 클래스의 인스턴스를 생성하여 시각적 내용을 렌더링합니다.
  2. RenderTargetBitmap.Render 메서드를 호출하여 시각적 요소를 비트맵에 렌더링합니다.
  3. PngBitmapEncoder 또는 JpegBitmapEncoder 클래스의 인스턴스를 생성하여 비트맵을 이미지로 인코딩합니다.
  4. 인코더의 Encoder.Frames 속성을 사용하여 렌더링된 비트맵을 프레임 컬렉션에 추가합니다.
  5. 파일에 인코딩된 이미지를 저장하기 위해 FileStream을 생성하거나 다른 스트림을 사용합니다.
  6. BitmapEncoder.Save 메서드를 호출하여 이미지를 저장합니다.
using System.IO;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;

public void PrintVisualToImage(Visual visual, string filePath)
{
    // RenderTargetBitmap 생성
    var renderTargetBitmap = new RenderTargetBitmap(
        (int)visual.RenderSize.Width,
        (int)visual.RenderSize.Height,
        96, // dpi X
        96, // dpi Y
        PixelFormats.Pbgra32);

    // 비트맵에 시각적 요소 렌더링
    renderTargetBitmap.Render(visual);

    // PngBitmapEncoder 또는 JpegBitmapEncoder 생성
    var bitmapEncoder = new PngBitmapEncoder(); // 또는 JpegBitmapEncoder

    // 렌더링된 비트맵을 프레임 컬렉션에 추가
    bitmapEncoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));

    // 이미지를 저장하기 위해 FileStream 생성
    using (var stream = new FileStream(filePath, FileMode.Create))
    {
        // 이미지 저장
        bitmapEncoder.Save(stream);
    }
}





// "myVisual"이라는 WPF 시각적 요소가 있다고 가정합니다.
PrintVisualToImage(myVisual, "C:\\경로\\output.png");

'Dev > WPF' 카테고리의 다른 글

Winform Chart  (0) 2024.06.22
nuget 설정  (0) 2023.04.17

댓글