Мерцание в Winform UI - PullRequest
       35

Мерцание в Winform UI

1 голос
/ 31 марта 2012

Я реализовал пользовательский интерфейс winform для Microsoft Robotics Studio для отображения некоторых данных датчиков.В настоящее время он рисует на панели каждые 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 Ответ

2 голосов
/ 31 марта 2012

Это довольно неизбежно, когда вы используете CreateGraphics (), вы рисуете прямо на экран.Только не вызывайте radarMap.Invalidate () и переместите код в обработчик событий Paint для radarMap.Теперь двойная буферизация будет работать элемент управления .

...