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 DropPlacementAdorner : Adorner { private readonly string _position; private static readonly Pen _pen; static DropPlacementAdorner() { // 定义装饰器的画笔 _pen = new Pen(Brushes.Red, 5.0); _pen.Freeze(); } public DropPlacementAdorner(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 "上": drawingContext.DrawLine(_pen, new Point(0, 0), new Point(adornedElementRect.Right, 0)); break; 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; } } } }