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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# プログラミングを教えて欲しいです。 配列aは、int a[9]={7,6,12,8,3,5,10,9 4 2022/12/19 23:27
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで配列の計算
-
パソコンキーボードで時分秒を...
-
VB.net 引数で配列変数を渡す際...
-
IF関数でEmpty値を設定する方法。
-
動的配列が存在(要素が有る)か...
-
ラジオボタンのチェックをEnter...
-
遅延バインディングを使用でき...
-
変数を動的に作るには?
-
C言語 配列からランダムに素数...
-
配列プロパティをREDIMする方法...
-
等間隔にベクトルを作成。(MAL...
-
VBで作った乱数を一度も重複さ...
-
EXCEL VBA で、0から?1から?
-
10進数を4桁のバイト配列に格納...
-
配列の要素数を超えた参照のコ...
-
複数のテキストボックスに同じ...
-
C言語 重複しない4ケタの乱数...
-
ランダムに絵を切り替えたい
-
Visual C++ でコントロールを...
-
コントロール配列の多次元配列
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで配列の計算
-
パソコンキーボードで時分秒を...
-
EXCEL VBA で、0から?1から?
-
IF関数でEmpty値を設定する方法。
-
変数を動的に作るには?
-
動的配列が存在(要素が有る)か...
-
C言語 重複しない4ケタの乱数...
-
VB.net 引数で配列変数を渡す際...
-
VBで作った乱数を一度も重複さ...
-
複数のテキストボックスに同じ...
-
VBでbyte配列型のインスタンス...
-
C#の質問
-
For文と配列
-
遅延バインディングを使用でき...
-
重複なしでランダムに画像を表...
-
配列の要素数を超えた参照のコ...
-
このプログラミングの問題を教...
-
Visual C++ でコントロールを...
-
ジャグ配列とは
-
Excel VBAで配列の途中から(X)M...
おすすめ情報