728x90
728x170
화면의 모든 내용을 캡쳐할 일이 생겼는데 아래 코드를 이용하면 화면의 모든 내용을 캡쳐할수 있다.
/// <summary>
/// Element 를 Capture 하여 저장합니다.
/// </summary>
/// <param name="element">컨트롤명</param>
/// <param name="filePath">저장파일명</param>
private void CaputreControl(FrameworkElement element, string filePath)
{
Rect rectangle = new Rect(0, 0, element.ActualWidth, element.ActualHeight);
DrawingVisual visual = new DrawingVisual();
using (DrawingContext context = visual.RenderOpen())
{
VisualBrush brush = new VisualBrush(element);
context.DrawRectangle(brush, null, new Rect(rectangle.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);
}
}
실행화면 (하늘색 부분이 캡쳐할 영역)
저장파일
소스
https://github.com/kei-soft/KJunBlog/tree/master/Wpf.ControlCapture
728x90
그리드형
'C# > WPF' 카테고리의 다른 글
[C#/WPF] Label 에 _ (언더바) 표시하기 (0) | 2022.08.31 |
---|---|
[WPF] 유용한 WPF 소스 ModernWpf (0) | 2022.08.07 |
[WPF] Xceed WPF Toolkit 사용하기 (0) | 2022.08.04 |
[WPF] ListView 선택 항목 배경 색 없애기 (0) | 2022.07.06 |
[WPF/Syncufsion] PDF 파일 다루기 (0) | 2022.06.22 |