延迟wpf绘图

时间:2016-05-27 21:34:38

标签: c# wpf

我写这个类作为测试,看看WPF绘制的速度有多快。它被设置为窗口的子元素。

internal class TestElement : UIElement
{
    private readonly Stopwatch st = new Stopwatch();
    private int frames = 0;

    public TestElement()
    {
        this.st.Start();
        CompositionTarget.Rendering += (sender, args) =>
                                       {
                                           this.frames++;
                                           if (this.st.ElapsedMilliseconds >= 1000)
                                           {
                                               Debug.WriteLine(this.frames);
                                               this.frames = 0;
                                               this.st.Restart();
                                           }
                                           this.InvalidateVisual();
                                       };
    }

    protected override void OnRender(DrawingContext drawingContext)
    {
        drawingContext.DrawEllipse(Brushes.Red, null, Mouse.GetPosition(this), 5, 5);
    }
}

InvalidateVisual需要0 ms。此外,帧率大多数时间是60。但是,我看到将椭圆绘制到屏幕上有相当大的延迟。它似乎跟在鼠标后面太远了。这是一个视频:

https://youtu.be/xFzaSjxQVcg

显然,它看起来不像60fps。会是什么原因?

0 个答案:

没有答案