在winform UI上闪烁

时间:2012-03-31 09:29:57

标签: c# winforms graphics panel flicker

我已经为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();
    }

1 个答案:

答案 0 :(得分:2)

当您使用CreateGraphics()时,这是非常不可避免的,您正在直接绘制到屏幕上。只是不要,调用radarMap.Invalidate()代替并将代码移动到radarMap的Paint事件处理程序。现在,双缓冲 the control 将起作用。