在winform UI上闪烁

本文关键字:闪烁 UI winform | 更新日期: 2023-09-27 18:29:40

我为Microsoft Robotics Studio实现了一个winform UI,用于显示一些传感器数据。目前,它使用下面的函数每100毫秒绘制一个面板。问题是,我看到我正在绘制的面板上闪烁,当拖动窗口时,感觉非常迟钝。根据其他人在这个论坛上遇到的情况,我在创建表单时使用了DoubleBuffered=true,但没有成功。关于如何改进这一点,有什么建议吗?提前谢谢。

此功能在面板上绘制代表雷达、的线条

    private void DrawRadarLines()
    {
        myPen = new Pen(Color.Red, 2);
        formGraphics = radarMap.CreateGraphics();
        for (int i = 0; i < sensorNetworkNum * 5; i++)
        {
            formGraphics.DrawLine(myPen, 
                (float)(195 - radarMapLines[i, 0] * scalingFactor), 
                (float)(195 - radarMapLines[i, 1] * scalingFactor), 
                (float)(195 - radarMapLines[i, 2] * scalingFactor), 
                (float)(195 - radarMapLines[i, 3] * scalingFactor));
        }
        myPen.Dispose();
        formGraphics.Dispose();
    }

在winform UI上闪烁

当你使用CreateGraphics()时,这是不可避免的,你直接画到屏幕上。不要这样做,而是调用radarMap.Invalidate(),并将代码移动到radarMap的Paint事件处理程序中。现在双缓冲控件将工作。