设置窗口顶部,左侧,宽度和高度,仅重绘一次



我在渲染窗口时遇到了一些问题,我想知道是否有办法可以设置这些属性的全部或子集,并且只重绘/渲染窗口一次。

我的问题是我正在渲染 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) 仅调用一次绘制逻辑。

最新更新