UIElement 위에 정보, 기능 등을 표시하기 위해 사용하는 사용자 지정 FrameworkElement
Adorner는 UIElement 내에 AdornerLayer를 생성하여 그 위에 객체를 배치하므로 어떤 객체들보다 상위에 나타난다.
(Z-inddex 등을 조절하는 것보다 편한 방법)
Adorner |
모든 구체적인 표시기 구현이 상속받는 추상 기본 클래스 |
AdornerLayer |
하나 이상의 표시한 요소의 표시기에 대한 렌더링 계층을 나타내는 클래스 |
AdornerDecorator |
표시기 계층이 요소 컬렉션에 연결될 수 있도록 하는 클래스 |
MSDN
| |
| public class SimpleCircleAdorner : Adorner |
| { |
| |
| public SimpleCircleAdorner(UIElement adornedElement) |
| : base(adornedElement) |
| { |
| } |
| |
| |
| |
| protected override void OnRender(DrawingContext dc) |
| { |
| Rect adornedElementRect = new Rect(this.AdornedElement.DesiredSize); |
| |
| |
| var renderBrush = new SolidColorBrush(Colors.Green); |
| renderBrush.Opacity = 0.2; |
| Pen renderPen = new Pen(new SolidColorBrush(Colors.Navy), 1.5); |
| double renderRadius = 5.0; |
| |
| |
| dc.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopLeft, renderRadius, renderRadius); |
| dc.DrawEllipse(renderBrush, renderPen, adornedElementRect.TopRight, renderRadius, renderRadius); |
| dc.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomLeft, renderRadius, renderRadius); |
| dc.DrawEllipse(renderBrush, renderPen, adornedElementRect.BottomRight, renderRadius, renderRadius); |
| } |
| } |
| myAdornerLayer = AdornerLayer.GetAdornerLayer(myTextBox); |
| myAdornerLayer.Add(new SimpleCircleAdorner(myTextBox)); |

★마우스 이벤트를 받지 않고 통과시키려면
myAdorner.IsHitTestVisible = false;