2012-03-31 84 views
1

我已經爲Microsoft Robotics Studio實現了一個winform UI來顯示一些傳感器數據。目前它使用下面的功能每隔100毫秒繪製一個面板。問題是我看到我正在繪製的面板上閃爍,當拖動窗口時感覺非常緩慢。根據其他人在本論壇上遇到的情況,我使用DoubleBuffered = true創建窗體時無濟於事。 有關如何改善此問題的任何提示?提前致謝。在winform UI上閃爍

這個功能繪製線條代表了雷達面板上,

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(); 
    } 

回答

2

當您使用的createGraphics(這幾乎不可避免的),你是畫直線到屏幕上。只是不要,請調用radarMap.Invalidate(),並將代碼移動到radarMap的Paint事件處理程序。現在雙緩衝the control將工作。

+0

這是一個真棒。嘿,謝謝你。恰到好處。 – nixgadgets 2012-03-31 09:45:06

+0

最後還需要調用Dispose嗎?從我的理解Dispose清除資源。 – nixgadgets 2012-03-31 10:31:20