728x90
반응형
728x170
▶ MainWindow.xaml
<Window x:Class="TestProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="800"
Height="600"
Title="DrawingContext 클래스 : DrawImage 메소드를 사용해 이미지 그리기"
Background="Transparent">
<Grid Name="grid" >
</Grid>
</Window>
728x90
▶ MainWindow.xaml.cs
using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
namespace TestProject
{
/// <summary>
/// 메인 윈도우
/// </summary>
public partial class MainWindow : Window
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 비트맵 이미지
/// </summary>
private BitmapImage bitmapImage;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainWindow()
/// <summary>
/// 생성자
/// </summary>
public MainWindow()
{
InitializeComponent();
this.bitmapImage = new BitmapImage();
this.bitmapImage.BeginInit();
this.bitmapImage.DecodePixelWidth = 300;
this.bitmapImage.UriSource = GetResourceURI(null, "IMAGE/sample.jpg");
this.bitmapImage.EndInit();
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Protected
#region 렌더링시 처리하기 - OnRender(drawingContext)
/// <summary>
/// 렌더링시 처리하기
/// </summary>
/// <param name="drawingContext">그리기 컨텍스트</param>
protected override void OnRender(DrawingContext drawingContext)
{
if(this.bitmapImage != null)
{
drawingContext.DrawRectangle
(
Brushes.White,
null,
new Rect
(
0,
0,
this.grid.ActualWidth,
this.grid.ActualHeight
)
);
Rect rectangle = new Rect
(
(this.grid.ActualWidth - this.bitmapImage.PixelWidth ) / 2,
(this.grid.ActualHeight - this.bitmapImage.PixelHeight) / 2,
this.bitmapImage.PixelWidth,
this.bitmapImage.PixelHeight
);
drawingContext.DrawImage(this.bitmapImage, rectangle);
}
}
#endregion
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 리소스 URI 구하기 - GetResourceURI(assemblyName, resourcePath)
/// <summary>
/// 리소스 URI 구하기
/// </summary>
/// <param name="assemblyName">어셈블리명</param>
/// <param name="resourcePath">리소스 경로</param>
/// <returns>리소스 URI</returns>
private Uri GetResourceURI(string assemblyName, string resourcePath)
{
if(string.IsNullOrEmpty(assemblyName))
{
return new Uri(string.Format("pack://application:,,,/{0}", resourcePath));
}
else
{
return new Uri(string.Format("pack://application:,,,/{0};component/{1}", assemblyName, resourcePath));
}
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > WPF' 카테고리의 다른 글
[C#/WPF] Storyboard 클래스 : Begin/Pause/Resume/SkipToFill/SetSpeedRatio/Stop 메소드 사용하기 (0) | 2020.09.11 |
---|---|
[C#/WPF] TreeView 엘리먼트 : AlternationConverter 객체를 사용해 트리 뷰 항목 배경색/폰트 스타일 설정하기 (0) | 2020.09.11 |
[C#/WPF] VisualBrush 엘리먼트 : 엘리먼트 반사 그림자 이미지 만들기 (0) | 2020.09.11 |
[C#/WPF] DrawingBrush 엘리먼트 : Drawing 속성을 사용해 물고기 브러시 만들기 (0) | 2020.09.11 |
[C#/WPF] DrawingContext 클래스 : DrawDrawing 메소드를 사용해 드로잉 그리기 (0) | 2020.09.11 |
[C#/WPF] DrawingContext 클래스 : DrawGeometry 메소드를 사용해 지오메트리 그리기 (0) | 2020.09.11 |
[C#/WPF] ControlTemplate 엘리먼트 : 가로 방향 ListBox 엘리먼트 정의하기 (0) | 2020.09.11 |
[C#/WPF] ControlTemplate 엘리먼트 : 라운드 사각형 TabControl 엘리먼트 정의하기 (0) | 2020.09.11 |
[C#/WPF] ControlTemplate 엘리먼트 : 사각형 탭 헤더를 갖는 TabControl 엘리먼트 정의하기 (0) | 2020.09.11 |
[C#/WPF] ControlTemplate 엘리먼트 : 아이콘 헤더 TabItem 엘리먼트 정의하기 (0) | 2020.09.11 |
댓글을 달아 주세요