掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ビットマップを使用して波形の表示をするには (ID:56067)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
たくさんのご指摘されたことを考慮に入れて、 下記の様にすればダイアログ表示時にうまく背景が描画できました。 ************************************ OnInitDialog() { // --------------------------------- // グラフ領域の背景設定 // --------------------------------- CDC* pDC = this->GetDC(); // 現在のデバイスコンテキストpDC m_DrawDC.CreateCompatibleDC(pDC); // pDCと互換のデバイスコンテキストを生成 m_BackScreenBMP.LoadBitmap(IDB_WAVE_SCREEN); // 背景ビットマップの作成 m_DrawDC.SelectObject(&m_BackScreenBMP); // マージ領域にコピー } void CANALOGDlg::OnPaint() { CPaintDC dc(this) ; dc.BitBlt(384,38,500,300,&m_DrawDC,0,0,SRCCOPY); //背景画面を表画面に転送。 } ************************************ これで最初の質問の1をクリアすることが出来たので 2番の処理を行おうと下記のような処理を行いましたが うまく波形が表示されませんでした。 ************************************ OnInitDialog() { // --------------------------------- // グラフ領域の背景設定 // --------------------------------- CDC* pDC = this->GetDC(); // 現在のデバイスコンテキストpDC m_DrawDC.CreateCompatibleDC(pDC); // pDCと互換のデバイスコンテキストを生成 m_MargeDrawDC.CreateCompatibleDC(pDC); // pDCと互換のデバイスコンテキストを生成 m_BackScreenBMP.LoadBitmap(IDB_WAVE_SCREEN); // 背景ビットマップの作成 m_DrawDC.SelectObject(&m_BackScreenBMP); // マージ領域にコピー flag = 1; } //------------------------------------------------------------------- // 波形描画 //------------------------------------------------------------------- void CANALOGDlg::WriteWave() { int i; double nYten; m_MargeDrawDC.SelectObject(&m_BackScreenBMP); // マージ領域に背景をコピー // グラフ波形 ライン設定 CPen GraphPEN(PS_SOLID, 1, RGB(255,255,0)); m_MargeDrawDC.SelectObject(&GraphPEN); m_MargeDrawDC.MoveTo(0, (int)(wave_zero - ((dDataV_ch[0][0] / volt_scale) * wave_zero))); for(i = 1; i <= draw_point; i += skip_data) { nYten = (dDataV_ch[0][i] / volt_scale) * wave_zero; m_MargeDrawDC.LineTo((int)(skip_draw * i),(int)(wave_zero - nYten)); } flag = 0; Invalidate(); } void CANALOGDlg::OnPaint() { CPaintDC dc(this); if(flag == 1) dc.BitBlt(384,38,500,300,&m_DrawDC,0,0,SRCCOPY); //背景画面を表画面に転送。 else dc.BitBlt(384,38,500,300,&m_MargeDrawDC,0,0,SRCCOPY); //背景画面を表画面に転送。 } ************************************ と言うように、裏画面としてm_MargeDrawDCを作成し、WriteWaveでそこに背景をコピーした後、 背景を描画してBitBltで背景及び波形を描画したm_MargeDrawDCを表示したつもりなのですが 何も表示されなくなってしまいました。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.