かまたです。
また、お世話になります。
早速ですがピクチャボックス上に大量の点を描画していく
以下の様な関数を作成しました。
// ピクチャボックス描画
void DrawRange(Graphics^ hGraphics, SolidBrush^ hSolidBrush, array<Point>^
XY_Data, USHORT nDataCnt)
{
for(nCnt = 0; nCnt < nDataCnt; nCnt++){
nRangeVal = m_RangeData[nCnt];
// ブラシカラー設定
hSolidBrush->Color = m_256ColorTbl[nRangeVal];
// 測点描画
hGraphics->FillRectangle(
hSolidBrush,
XY_Data[nCnt].X,
XY_Data[nCnt].Y,
1,
1
);
}
}
なのですがnDataCntが約1800程度あるため非常に描画に時間がかかります。
(この関数を2回程度コールして100ms程度)
この描画時間をなんとか短縮できないものかと
(30ms程度まで縮めたい)
試行錯誤していますが、うまくいきません。
FillRectangles()を使用して一度に点を描画すれば速いのかと
考えしましたが、これはブラシのカラーが配列ではないのでNGでした。
識者の方々にお力添えを頂ければ幸いと思います。
宜しくお願いいたします。
似たような物が他の掲示板であったのでリンクしときます。
あちらでも進行中ですが、何かヒントになるような物が出てくるかもしれませんし。
ちなみに私の言いたい事はリンク先にで述べているので良かったら参考にどうぞ。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=15900
お世話になっております。
かまたです。
PATIOさんアドバイス有り難うございました。
BufferedGraphicsクラスのメモリを確保
↓
確保したメモリに描画
↓
BufferedGraphics::Renderメソッドで描画
でうまくいきました。
非常に助かりました。重ねて御礼申し上げます。
また、お世話になることもあるかもしれませんが、
その時は何卒宜しくお願いたします。