我正在使用.NET 3.5中的装饰器,在覆盖OnRender方法后可以进行绘制,但我需要重新绘制装饰器以更改其外观。
本质上,我正在寻找一种清除绘图上下文并再次调用OnRender方法的方法。有什么最好的方法来实现这一点,或者是否有更好的方法?
public class MyAdorner : Adorner
{
private Brush brush = Brushes.Red;
public DragArrowAdorner(UIElement adornedElement) : base(adornedElement)
{}
public void RedrawWithBrush(Brush newBrush)
{
brush = newBrush;
// redraw..?
}
protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
{
// some drawing code...
drawingContext.DrawRectangle(
brush,
null,
new Rect(AdornedElement.DesiredSize));
}
}