• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ログデータを表示するグラフについて)

ログデータを表示するグラフについて

このQ&Aのポイント
  • VC++ MFCダイアログベースで、通信で取得した値をグラフにするソフトを作成しています。しかし、配列の要素数を増やすと処理が重くなり、別のエディットボックスの表示が更新されなくなる不具合が生じています。現在は0か1の値を表示していますが、もっと簡単な方法はないか考えています。アイデアをいただけないでしょうか?
  • 作成中のソフトでは、VC++ MFCダイアログベースを使用して通信で取得した値をグラフに表示しています。ただし、配列の要素数を増やすと処理が重くなり、別のエディットボックスの表示が更新されなくなってしまう不具合が発生しています。そこで、値の表示方法をより簡単にしたいと考えています。お知恵をお貸しください。
  • VC++ MFCダイアログベースのソフトで、通信で取得した値をグラフに表示しています。しかし、配列の要素数を増やすと処理が重くなり、別のエディットボックスの表示が更新されなくなるという不具合が生じています。そこで、現在の0か1の表示方法をより簡単にしたいと考えています。アイデアをいただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答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/win23.html→『カレントポジションと線』 ・http://msdn2.microsoft.com/ja-jp/library/534yk5b3(VS.80).aspx→『CDC::PolylineTo (MFC)』  基本的に GDI の操作は処理が低速です。これが処理を重くしているのかな。 ・以上。

参考URL:
http://msdn2.microsoft.com/ja-jp/library/534yk5b3(VS.80).aspx
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • JAVAで配列を使って * を縦向きのグラフで表示したいです。

    JAVAの勉強をしています。 このプログラムは配列に乱数を生成して * を 横向きにするプログラムです。 練習問題で、以下のプログラムを書き換えて、* を縦向きのグラフで表示する問題なのですが、解く方法がわかりません。 どなたか答えもしくはヒントを下さい。 よろしくお願いします。 import java.util.Random; import java.util.Scanner; public class Test06_04 { public static void main (String[] args) { Random rand = new Random(); Scanner stdIn = new Scanner(System.in); System.out.print("要素数 : "); int n = stdIn.nextInt(); //要素数を読み込む int[] a = new int[n]; //配列を生成 for (int i = 0; i < n; i++) { a[i] = 1+ rand.nextInt(10); } for (int i = 0; i < n; i++) { System.out.print("a[" + i + "] : "); for (int j = 0; j < a[i]; j++) System.out.print('*'); System.out.println(); } } }

    • ベストアンサー
    • Java
  • mfcの画像表示で、bmp表示がよくわかりません

    mfcの画像表示で、bmp表示がよくわかりません。 特に、SelectObject()でBitmapを戻す等が特によくわかりません。 今までは、そういうもんだとしてきたのですが、放っておけない事態になりまして、 相談させて下さい。 (1)下記のbmpDC.SelectObject(oldbmp)等について、その仕組みを詳細に紹介しているHPを ご存じでしたらお教えください。 (2)下記プログラムの画像の扱いで、まずい部分を、おかしいなと思われた部分をお教えください。  動作は、問題なく動作しています。BITMAPを敷き詰めるプログラムです。 CArray<HBITMAP> hBitAry; (HBITMAPを配列にしているまずさは今回は除外して下さい。) … int topX=-100-5; int topY=0; int hLen=100; int wLen=100; int yoko=0; CDC *pDC=mPict.GetDC(); for(int i=0; i<hBitAry.GetCount(); i++) { CDC bmpDC; bmpDC.CreateCompatibleDC(pDC); CBitmap *pBitmap=CBitmap::FromHandle(hBitAry.GetAt(i)); BITMAP BMP; pBitmap->GetBitmap(&BMP); CBitmap *oldbmp=bmpDC.SelectObject(pBitmap); if(yoko<3) { topX+=100+5; yoko++; } else { topX=0; topY+=100+5; yoko=0; } pDC->SetStretchBltMode(COLORONCOLOR); pDC->StretchBlt(topX,topY,100,100,&bmpDC,0,0,BMP.bmWidth,BMP.bmHeight,SRCCOPY); bmpDC.SelectObject(oldbmp); ::DeleteObject(CBitmap::FromHandle(hBitAry.GetAt(i))); } ReleaseDC(pDC); どうぞよろしくお願い致します。

  • 配列の定義について

    配列とは、同じ形式のデーターを連続した記憶領域で確保するためのものである。 配列を構成する個々の領域を要素と呼び、要素の位置を添え字で示す。 Javaでは配列の先頭の要素を(0)番目と呼ぶ。 今、hairetsuという名前で10個の整数からなる配列を定義したい。 この場合の配列は(0)番目から始まり、終端は(9)番目である。 これを定義するには (int[] hairetsu;) (hairetsu = new int[10];) のように2行で行う方法と、 (int[] hairetsu = (new int[10];) のように、一行で行う方法がある。 Javaでは定義済みの配列の要素数は、配列変数名.(length)で知ることができ、 終端は(length + 1)番目となる。 したがって(length + 1)番目以降を使おうとすると、 配列要素の範囲外で(例外)が発生する。 この文章の( )の中は間違っていますか?

    • ベストアンサー
    • Java
  • CDCオブジェクトの作成について

    // あまり意味はないのですが、 //CDCのオブジェクトを宣言して、 //そこへ図形を描画して、 //クライエント領域にBitBltするときは、 //どうすればいいですか? //CreateCompatibleDCが関係していると思っています。 //ですが、上手く描画できません。 //教えてください、 //お願いします。 void CProject1View::OnDraw(CDC* pDC) { CProject1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; ////////////////////////////////////////////////////// CDC imageDC; CPen pen,*oldpen; pen.CreatePen(PS_SOLID,3,RGB(255,0,0)); imageDC.CreateCompatibleDC(pDC); for(int i=0;i<100;i++) { for(int j=0;j<100;j++) { imageDC.SetPixel(i,j,RGB(128,0,0)); } } oldpen=imageDC.SelectObject(&pen); imageDC.Rectangle(50,50,400,300); pDC->BitBlt(0,0,600,600,&imageDC,0,0,SRCCOPY); imageDC.SelectObject(oldpen); ////////////////////////////////////////////////////// }

  • VC++2010 で線形の描画についてですが・・

    VC++2010 で線形の描画についてまた質問なんですが、以下のように記述すると線ができなく、 点だけが動くプログラムになりました。解決方法がわからないのでよろしくお願いします。 今回のプロジェクトの目的はある機器からデータを取ってきて(1msごとに)それを1msごとに 直線として出力するプロジェクトです 電圧                    ↑          ________ ↑         |          |________→→ ーーーーーーーー  →→時間 ↑↑↑ このような線を出力しなければならないです。 以下がソースになっています。 使用環境VC++2010 MFC test10000Dlg.cpp ちなみにm_lineXとm_lineYはメンバー変数です(double型) ボタンがクリックされたときのイベント SetTimer(0, 1, NULL); void Ctest10000Dlg::OnTimer(UINT_PTR nIDEvent) { UpdateData(); after_datay = sam_data; m_xvEditX = m_lineX; m_xvEditSamd = m_lineY; m_xvEditSami = sam_i++; if(sam_i%200==0) { m_lineY -= 5; sam_i = 0; } m_lineX++; UpdateWindow(); Invalidate(FALSE); } void Ctest10000Dlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 描画のデバイス コンテキスト SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // クライアントの四角形領域内の中央 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // アイコンの描画 dc.DrawIcon(x, y, m_hIcon); } else { //****************************************************************************************************** CRect rect_dlg; GetClientRect(&rect_dlg); CBrush br_black(RGB(0,0,0)); //各色ペン CPen pen_black(PS_SOLID,1,RGB(0,0,0)); CPen pen_gray(PS_DOT,1,RGB(128,128,128)); CPen pen_blue(PS_SOLID,1,RGB(0,0,255)); CPen pen_white(PS_SOLID,1,RGB(255,255,255)); int max_y=1; if(int(m_sin+m_cos+1.0)>max_y) max_y=int(m_sin+m_cos)+1; CDC* pDC=m_pict.GetDC(); //PictureControlの大きさ取得 CRect rect; m_pict.GetClientRect(&rect); //元のブラシをoldbrに保持 CBrush* oldbr=pDC->SelectObject(&br_black); //元のペンをoldpenに保持 CPen* oldpen=pDC->SelectObject(&pen_black); //(1)背景描画(ブラシ白、ペン黒) pDC->Rectangle(&rect); //(2)中心線(黒、実線) pDC->SelectObject(&pen_blue); pDC->MoveTo(10,rect.Height()-10); pDC->LineTo(10,10); pDC->MoveTo(10,rect.Height()-10); pDC->LineTo(rect.Width()-10,rect.Height()-10); pDC->SelectObject(&pen_white); pDC->MoveTo(m_lineX,m_lineY_after); pDC->LineTo(m_lineX+1,m_lineY); pDC->SelectObject(oldbr); pDC->SelectObject(oldpen); m_lineY_after = m_lineY; UpdateData(FALSE); CDialog::OnPaint(); } } ではよろしくお願いします

  • Excelマクロ:配列データからグラフを作成するには?

    マクロ初心者です。 Excel VBAのマクロで、2つの配列データから、散布図グラフを作成したいのですが、セルに配列データを書き込まず、直接グラフ化するにはどうしたらよいでしょうか? 配列データの要素数がexcelの行と列の最大数(65536,256)?を超えてしまっているので、配列データから直接グラフ化したいと思っています。 よろしくお願いいたします。

  • 折れ線グラフで横軸の1時間の幅を均等にしたい。

    折れ線グラフで横軸の1時間の幅を均等にしたい。 Excel 2003で、1日24時間の気温の変化を横軸に時刻、縦軸に気温を取って折れ線グラフにしました。 気温測定時刻はほぼ1時間に1回なのですが、いつも00分とかいった固定された時刻ではなく、3:15分に測って、次は4:32分に測って、5時台は飛んで、次は6:03分に測って、...という風にまちまちです。 横軸は、横方向のグラフの幅の全体を24等分したものを1時間にしたい(つまり、1時間の幅をどの1時間も同じにしたい)のですが、 時刻  気温 3:15  36.1 4:32  35.9 6:03  34.2 のような表を作ってこれをグラフにすると、横軸に3:15、4:32、5:03が等間隔にプロットされてしまい、1時間の幅が同じになりません。 横軸の1時間の幅をどの1時間も同じにして、その目盛の上に上記のような測定値を正しくその時刻の位置に(つまり、例えば3:15の測定値は正しく3:15分の位置に)プロットするにはどうしたらいいのでしょうか。

  • 条件式について・・・・・・・・・・・・

    画像の左下隅と右上隅を結んだ線分を考え、この線分よりも下の三角形の領域をネズミ色(RGB成分の輝度値が128)にした画像を生成するプログラムをやっているのですが、左下隅と右上隅を結んだ線分を考え、この線分よりも下の三角形の領域の色を変えたい場合は、 まず、for(k = 0; k < nWidth; k++) を変えるべきだと思うのですが・・・・・・・四角の画像の右下から上に徐々に色を変えてくかんじだと思うのですが、三角形の公式みたいなのって関係ありますか? /* nWidth:画像の幅、nHeight:画像の高さ、nVal:輝度値*/ int nWidth,nHeight; /* 画像を生成する */ for(j = 0; j < nHeight; j++) for(k = 0; k < nWidth; k++) { DllBmpSetPixelValueR(pBmpOrig, j, k, 255); DllBmpSetPixelValueG(pBmpOrig, j, k, 255); DllBmpSetPixelValueB(pBmpOrig, j, k, 255); } わかる方は、教えてください。よろしくお願いします。

  • ゲノムアイランド、説明に使われているグラフの意味が良く分かりません。

    ゲノムアイランドについて、ゲノムアイランドとは 他の菌から転移してきたDNA領域との説明を受けました。 そして、ノートにグラフを書いて転移領域を示されたのですが このグラフの意味が良く分かりません。 グラフを見ると、下方に顕著に突起した緑色の領域が 転移領域であり、この部分は外来遺伝子領域であることが 漠然と分かりそうなのですが、正確に見ていくと良く分かりません。 ・X軸は具体的に何を示しているのか?正の位置がアデニンとチミン、負の位置がグアニンとシトシンとありますが 各々の何を表しているのか?含有量?? ・Y軸は何を表しているのか?DNAの塩基配列を末端から 番号を振っていき、その番号を表しているのか? だとしたらYの最終値はDNAの塩基配列の数? ・そもそもこのグラフは何を示しているのか? X軸とY軸の定義(上2問)が明らかになれば、分かるとは思うのですが。。。 多分染色体のATCGの分布を示しているかもしれませんが、 X軸とY軸が正確に何を示しているのかわからないので グラフの意味が良く分かりません。 要は、X軸とY軸について教えていただければ その後は考えて見ることが出来ると思うのですが、、。 もしご存知の方がいましたらお願いします。

  • エクセルのグラフタイトルを中央にしたい。

    こんにちは。 質問です。エクセルのグラフでグラフタイトルがあるのですが、 位置を中央に持って行く方法がわかりません。 また、グラフタイトルの文字数が変わっても位置を中央にしたいのですが、どうしたらよいのでしょうか? 出来ればVBAで何とかしたいです。 グラフの幅を調べ、グラフタイトルの文字の長さ(ピクセル)を調べ、 (グラフ幅-文字の長さ)/2で中央に出来ると思いますが、文字の長さの調べ方がわからないので困っています。 まとまりのない文章で申し訳ありませんが、宜しくお願い致します。

このQ&Aのポイント
  • モニターアームを取り付けた際に、モニターが重さで下がってしまう問題が発生しています。
  • 六角レンチで閉める箇所が角度のみで、上下のきつさを調整できません。
  • 解決策や対応方法を教えていただきたいです。
回答を見る