첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170
using System.IO;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;

#region 이미지 저장하기 - SaveImage(element, filePath)

/// <summary>
/// 이미지 저장하기
/// </summary>
/// <param name="element">프레임워크 엘리먼트</param>
/// <param name="filePath">파일 경로</param>
public void SaveImage(FrameworkElement element, string filePath)
{
    Rect elementRectangle = VisualTreeHelper.GetDescendantBounds(element);

    DrawingVisual visual = new DrawingVisual();

    using(DrawingContext context = visual.RenderOpen())
    {
        VisualBrush brush = new VisualBrush(element);

        context.DrawRectangle(brush, null, new Rect(elementRectangle.Size));
    }

    int width  = (int)element.ActualWidth;
    int height = (int)element.ActualHeight;

    RenderTargetBitmap bitmap = new RenderTargetBitmap
    (
        width,
        height,
        96,
        96,
        PixelFormats.Pbgra32
    );

    bitmap.Render(visual);

    PngBitmapEncoder encoder = new PngBitmapEncoder();

    encoder.Frames.Add(BitmapFrame.Create(bitmap));

    using(FileStream stream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
    {
        encoder.Save(stream);
    }
}

#endregion
728x90
반응형
그리드형
Posted by 사용자 icodebroker
TAG , ,

댓글을 달아 주세요