2012-03-31 20 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

+0

最後にDisposeを呼び出す必要はありますか?私の理解から、Disposeはリソースをクリアします。 – nixgadgets