我在渲染窗口时遇到了一些问题,我想知道是否有办法可以设置这些属性的全部或子集,并且只重绘/渲染窗口一次。
我的问题是我正在渲染 2 个窗口并使它们"附加",以便它们一致移动和调整大小。这意味着当我调整大小/移动一个窗口时,我最终会进行 4 次调用来渲染,而我最多只需要 2 个。
例如,"Move_Click"方法附加到窗口上的按钮。单击时,最终会调用"OnRender"两次。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
protected override void OnRender(DrawingContext drawingContext)
{
Console.Error.WriteLine("On rendering...");
base.OnRender(drawingContext);
}
private void Move_Click(object sender, RoutedEventArgs e)
{
this.Left--;
this.Top--;
this.Width--;
this.Height--;
}
}
您可以只存储一个标志,说明是否渲染:
public partial class MainWindow : Window
{
private bool suspended;
public MainWindow()
{
this.InitializeComponent();
}
protected override void OnRender(DrawingContext drawingContext)
{
if (suspended)
return;
base.OnRender(drawingContext);
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
suspended = true;
Left = 0;
Top = 0;
Width = 100;
Height = 100;
suspended = false;
this.InvalidateVisual();
}
}
你可以用公共方法包装它,如 SuspendRender() 和 ResumeRender()。
你可以
使用它。设置边界(这个。左-1,这个。前 1 名,这个。宽度-1,这个。Height-1) 仅调用一次绘制逻辑。