69 lines
2.2 KiB
C#
69 lines
2.2 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
|
|||
|
|
namespace RazorEngineTest
|
|||
|
|
{
|
|||
|
|
using System.Windows;
|
|||
|
|
using System.Windows.Documents;
|
|||
|
|
using System.Windows.Media;
|
|||
|
|
|
|||
|
|
public class PositionAdorner : Adorner
|
|||
|
|
{
|
|||
|
|
private readonly string _position;
|
|||
|
|
private static readonly Pen _pen;
|
|||
|
|
|
|||
|
|
static PositionAdorner()
|
|||
|
|
{
|
|||
|
|
// 定义装饰器的画笔
|
|||
|
|
_pen = new Pen(Brushes.Red, 5.0);
|
|||
|
|
_pen.Freeze();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public PositionAdorner(UIElement adornedElement, string position)
|
|||
|
|
: base(adornedElement)
|
|||
|
|
{
|
|||
|
|
_position = position;
|
|||
|
|
IsHitTestVisible = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override void OnRender(DrawingContext drawingContext)
|
|||
|
|
{
|
|||
|
|
var adornedElementRect = new Rect(AdornedElement.RenderSize);
|
|||
|
|
|
|||
|
|
// 根据位置信息绘制不同的视觉效果
|
|||
|
|
switch (_position)
|
|||
|
|
{
|
|||
|
|
case "前":
|
|||
|
|
case "上":
|
|||
|
|
drawingContext.DrawLine(_pen,
|
|||
|
|
new Point(0, 0),
|
|||
|
|
new Point(adornedElementRect.Right, 0));
|
|||
|
|
break;
|
|||
|
|
case "后":
|
|||
|
|
case "下":
|
|||
|
|
drawingContext.DrawLine(_pen,
|
|||
|
|
new Point(0, adornedElementRect.Bottom),
|
|||
|
|
new Point(adornedElementRect.Right, adornedElementRect.Bottom));
|
|||
|
|
break;
|
|||
|
|
case "左":
|
|||
|
|
drawingContext.DrawLine(_pen,
|
|||
|
|
new Point(0, 0),
|
|||
|
|
new Point(0, adornedElementRect.Bottom));
|
|||
|
|
break;
|
|||
|
|
case "右":
|
|||
|
|
drawingContext.DrawLine(_pen,
|
|||
|
|
new Point(adornedElementRect.Right, 0),
|
|||
|
|
new Point(adornedElementRect.Right, adornedElementRect.Bottom));
|
|||
|
|
break;
|
|||
|
|
case "中":
|
|||
|
|
drawingContext.DrawRectangle(null, _pen, adornedElementRect);
|
|||
|
|
break;
|
|||
|
|
default:break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|