■ Adorner 클래스를 사용하는 기본적인 방법을 보여준다.
▶ FourPointsAdorner.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
using System.Windows; using System.Windows.Documents; using System.Windows.Media; namespace TestProject { /// <summary> /// 4개 포인트 어도너 /// </summary> public class FourPointsAdorner : Adorner { //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - FourPointsAdorner(uiElement) /// <summary> /// 생성자 /// </summary> /// <param name="uiElement">UIElement</param> public FourPointsAdorner(UIElement uiElement) : base(uiElement) { } #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Protected #region 렌더링시 처리하기 - OnRender(drawingContext) /// <summary> /// 렌더링시 처리하기 /// </summary> /// <param name="drawingContext">DrawingContext</param> protected override void OnRender(DrawingContext drawingContext) { Rect rect = new Rect(AdornedElement.DesiredSize); drawingContext.DrawRectangle(Brushes.Blue, null, new Rect(rect.TopLeft.X , rect.TopLeft.Y , 5, 5)); drawingContext.DrawRectangle(Brushes.Blue, null, new Rect(rect.BottomLeft.X , rect.BottomLeft.Y - 5 , 5, 5)); drawingContext.DrawRectangle(Brushes.Blue, null, new Rect(rect.TopRight.X - 5 , rect.TopRight.Y , 5, 5)); drawingContext.DrawRectangle(Brushes.Blue, null, new Rect(rect.BottomRight.X - 5, rect.BottomRight.Y - 5, 5, 5)); } #endregion } } |
▶ MainWindow.xaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<Window x:Class="TestProject.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="600" Height="450" Title="Adorner 클래스 사용하기"> <Grid> <Ellipse Name="ellipse" Width="200" Height="200" Stroke="Black" StrokeThickness="10" Fill="Yellow" /> </Grid> </Window> |
▶ MainWindow.xaml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
using System.Windows; using System.Windows.Documents; namespace TestProject { /// <summary> /// 메인 윈도우 /// </summary> public partial class MainWindow : Window { //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - MainWindow() /// <summary> /// 생성자 /// </summary> public MainWindow() { InitializeComponent(); Loaded += Window_Loaded; } #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Private #region 윈도우 로드시 처리하기 - Window_Loaded(sender, e) /// <summary> /// 윈도우 로드시 처리하기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="e">이벤트 인자</param> private void Window_Loaded(object sender, RoutedEventArgs e) { AdornerLayer.GetAdornerLayer(this.ellipse).Add(new FourPointsAdorner(this.ellipse)); } #endregion } } |