Files
Example/RazorEngineTest/PositionAdorner.cs

69 lines
2.2 KiB
C#
Raw Normal View History

2025-09-06 22:55:02 +08:00
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;
}
}
}
}