私のアプリケーションは外部ハードウェアからデータを受け取り、それをパネルにプロットします(実際には「コントロール」の他の子にすることができます)。現在、ペイントは「OnPaint」コールバックで行われます。リストは、最近受信したデータを保存するために使用され、たとえばウィンドウのサイズが変更された場合に、グラフ全体をOnPaintで再描画して、比率を正しく取得できるようにします。
グラフ自体はe->Graphics
、2つのデータポイント間の線を使用して要素で描画されます。
これは正常に機能していますが、50ミリ秒ごとに新しいデータが届くと(=グラフ全体を再描画すると)、グラフがすぐにちらつき始めます。ちらつきは、プロットする必要のあるデータが多いほど強くなります(コントロールの右側に到達すると、データキャッシュがクリアされるため、グラフ内のデータポイントの最大数は有限になります)。
私のコードの主要部分:
void Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
{
Size^ s = m_Control->Size;
Bitmap^ bmp = gcnew Bitmap(s->Width, s->Height);
Graphics^ g = Graphics::FromImage(bmp);
for each(double y in m_Data)
{
/* ...calculations etc... */
g->DrawLine(Pens::Blue, recentX, recentY, currentX, currentY);
}
e->Graphics->DrawImageUnscaled(bmp, 0, 0);
}
ちらつきを取り除くために絵を最適化する方法について何か提案はありますか?前もって感謝します!