
VC++ MFCダイアログベースです。
通信で取得した値をグラフにすると言うソフトを作っています。
グラフにでき、動作するのですが、配列の要素数を増やしていくと処理が重くなってしまい
受信したデータを表示するために作った別のエディットボックスの表示が
更新されなくなると言う不具合がありました。
値は0か1だけであり、もう少し簡単に出来ないか考えているのですが、
どうかアイデアをいただけないでしょうか?
よろしくお願い致します。
// m_nNumPlot;//配列の要素数(unsigned int)
// m_pPlotData[m_nNumPlot];//通信で受信データを格納(double)
// nWidth;//グラフ領域の幅サイズ←Bitmap.CreateCompatibleBitmap(&dc, nWidth, nHeight);
double PlotX;// プロットする X 位置
double PlotY;// プロットする Y 位置
// PlotSpace = グラフ領域の幅サイズ÷(配列の要素数-1)
double PlotSpace = (double)nWidth / (m_nNumPlot - 1);// プロットの間隔
pDC->SelectObject(&m_penGraph);
// 配列の(要素数-1)回線を書くループ
for(int j = 0; j < m_nNumPlot; j++){
PlotX = nWidth - PlotSpace * j;
PlotY = m_pPlotData[j];//計算した後のY位置
if(j == 0)pDC->MoveTo((int)PlotX, (int)PlotY);//線の始点
elsepDC->LineTo((int)PlotX, (int)PlotY);//線の終点
}
pDC->SelectObject(pOldPen);
No.1ベストアンサー
- 回答日時:
★折れ線グラフですか。
・折れ線グラフなら MoveTo()、LineTo() を組み合わせなくても PolylineTo() の1つで実行できます。
配列の構造を PolylineTo() で利用可能な形式に変更して呼び出せば簡単に折れ線を描画してくれます。
つまり、配列を POINT 構造体にセットします。→ループ部分でセットしなおす。その後に実行。
・下にそのサンプルを載せておきます。
サンプル:
POINT Plot[ m_nNumPlot ];
for ( int j = 0 ; j < m_nNumPlot ; j++ ){
Plot[ j ].x = nWidth - PlotSpace * j;
Plot[ j ].y = m_pPlotData[ j ];
}
pDC->PolylineTo( Plot, m_nNumPlot );
参考文献:
・http://wisdom.sakura.ne.jp/system/winapi/win32/w …→『カレントポジションと線』
・http://msdn2.microsoft.com/ja-jp/library/534yk5b …→『CDC::PolylineTo (MFC)』
基本的に GDI の操作は処理が低速です。これが処理を重くしているのかな。
・以上。
参考URL:http://msdn2.microsoft.com/ja-jp/library/534yk5b …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パソコンキーボードで時分秒を...
-
IF関数でEmpty値を設定する方法。
-
複数のテキストボックスに同じ...
-
C#の質問
-
EXCEL VBA で、0から?1から?
-
Excel VBAで配列の途中から(X)M...
-
java プログラミングについて
-
0dの意味を教えてください
-
C言語の変数(LSB)の合わせ込...
-
ループ処理の際、最後だけ","を...
-
JPanelの切り替えと再描画
-
doubleとintの違い
-
JAVAでSJISのコード変換
-
system.out.printが出力されない
-
C言語のポインターに関する警告
-
n番目に大きな値を探索する
-
JPanelの重ね方/OverlayLayout他
-
BOOL値を逆にしたい
-
この警告はどうすれば?
-
1~100までの数字を表示し、か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
動的配列が存在(要素が有る)か...
-
IF関数でEmpty値を設定する方法。
-
VBAで配列の計算
-
VB.net 引数で配列変数を渡す際...
-
C言語 重複しない4ケタの乱数...
-
EXCEL VBA で、0から?1から?
-
パソコンキーボードで時分秒を...
-
C#の質問
-
変数を動的に作るには?
-
配列の要素数を超えた参照のコ...
-
VBで作った乱数を一度も重複さ...
-
Excel VBAで配列の途中から(X)M...
-
Visual C++ でコントロールを...
-
VBでbyte配列型のインスタンス...
-
For文と配列
-
複数のテキストボックスに同じ...
-
五目並べのプログラムを配列と...
-
格闘ゲームのコマンド判定について
-
フォームコントロールのチェック
-
遅延バインディングを使用でき...
おすすめ情報