728x90
728x170
■ UIElement 클래스를 사용해 JPEG 이미지를 구하는 방법을 보여준다.
▶ 예제 코드 (C#)
using System.IO;
using System.Windows;
using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Media.Imaging;
#region JPEG 이미지 구하기 - GetJPEGImage(uiElement, scale, qualityLevel)
/// <summary>
/// JPEG 이미지 구하기
/// </summary>
/// <param name="uiElement">UIElement</param>
/// <param name="scale">확대/축소 비율</param>
/// <param name="qualityLevel">품질 레벨</param>
/// <returns>이미지 바이트 배열</returns>
public byte[] GetJPEGImage(UIElement uiElement, double scale, int qualityLevel)
{
double actualWidth = uiElement.RenderSize.Width;
double actualHeight = uiElement.RenderSize.Height;
double renderWidth = actualWidth * scale;
double renderHeight = actualHeight * scale;
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap((int)renderWidth, (int)renderHeight, 96, 96, PixelFormats.Pbgra32);
VisualBrush visualBrush = new VisualBrush(uiElement);
DrawingVisual drawingVisual = new DrawingVisual();
using(DrawingContext drawingContext = drawingVisual.RenderOpen())
{
drawingContext.PushTransform(new ScaleTransform(scale, scale));
drawingContext.DrawRectangle(visualBrush, null, new Rect(new Point(0, 0), new Point(actualWidth, actualHeight)));
}
renderTargetBitmap.Render(drawingVisual);
JpegBitmapEncoder jpegBitmapEncoder = new JpegBitmapEncoder();
jpegBitmapEncoder.QualityLevel = qualityLevel;
jpegBitmapEncoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
byte[] imageByteArray;
using(MemoryStream memoryStream = new MemoryStream())
{
jpegBitmapEncoder.Save(memoryStream);
imageByteArray = memoryStream.ToArray();
}
return imageByteArray;
}
728x90
그리드형(광고전용)
'C# > WPF' 카테고리의 다른 글
[C#/WPF] 엘리먼트를 마우스로 드래그해 이동시키기 (0) | 2015.11.05 |
---|---|
[C#/WPF] FrameworkElement 클래스 : 프레임워크 엘리먼트 전면으로 보이기 (0) | 2015.11.04 |
[C#/WPF] WindowsFormsHost 클래스 : WinForm 컨트롤의 부모 WindowsFormsHost 구하기 (0) | 2015.11.04 |
[C#/WPF] Adorner 클래스 사용하기 (0) | 2015.11.04 |
[C#/WPF] Popup 클래스 : 팝업 활성화하기 (0) | 2015.11.04 |
[C#/WPF] WindowsFormsHost 클래스 : 브라우저 애플리케이션(XBAP)에서 사용하기 (0) | 2015.11.03 |
[C#/WPF] BrowserInteropHelper 클래스 : IsBrowserHosted 정적 속성을 사용해 브라우저 애플리케이션 (XBAP) 여부 구하기 (0) | 2015.11.03 |
[C#/WPF] x:FieldModifier 속성 : 엘리먼트를 public으로 노출시키기 (0) | 2015.10.28 |
[C#/WPF] 객체 동적 바인딩 처리하기 (0) | 2015.10.22 |
[C#/WPF] WindowsFormsHost 클래스 : WinForm 객체 사용시 스크롤 영역 클리핑 처리하기 (0) | 2015.10.22 |