Penの色、幅が再描画で消えてしまう – プログラミング – Home

Penの色、幅が再描画で消えてしまう
 
通知
すべてクリア

[解決済] Penの色、幅が再描画で消えてしまう


kei
 kei
(@kei)
ゲスト
結合: 23年前
投稿: 43
Topic starter  

【環境:Win98, VC++6.0, MFC, View/Doc】
いつもお世話になっております。

現在、View上でマウスを動かすとその動きに合わせて線を引く、
というプログラムを作成しております。
View上に描いた線は、デバイスコンテキストに保存しておき、
OnDraw()で再描画しています。

CDCへ保存
void CMyView::DrawLine ( CPoint pt1, CPoint pt2 )
{
CDC* pDC = GetDC();
CPen NewPen(PS_SOLID, m_PenWidth, m_PenColor);
CPen *pOldPen = pDC->SelectObject ( &NewPen );

pDC->MoveTo ( pt1 );
pDC->LineTo ( pt2 );
m_dcPlot.MoveTo( pt1 );
m_dcPlot.LineTo( pt2 );

pDC->SelectObject ( pOldPen );
ReleaseDC(pDC);
}

再描画 OnDraw()
  pDC->BitBlt(0, 0, 700, 1000, &m_dcPlot, 0, 0, SRCAND) ;

ペンの色が黒、幅が1の場合は再描画はうまくいっていたのですが、
ペンの色を黒以外、幅を1以上にしても、再描画時にペンの色と幅が
設定したものではなく、色が黒と幅は1になってしまいます。

ペンの色や幅を再描画時にも適用するにはどのようにしたら良いのでしょうか。
分かる方がいらっしゃいましたら、助言を頂けると幸いです。
宜しくお願い致します。


引用未解決
トピックタグ
n
 n
(@n)
ゲスト
結合: 23年前
投稿: 159
 

m_dcPlotにも作成したペンを選択&選択解除させましょう。


返信引用
kei
 kei
(@kei)
ゲスト
結合: 23年前
投稿: 43
Topic starter  

n様
ありがとうございます!解決しました~☆
指摘されると「あ、そんなこと・・・」と思いましたが、
目からうろこ、、でして。
そんな発想がなかったです。
本当に、ありがとうございました。

必要ないと思いますが、一応載せておきます。

void CMyView::DrawLine ( CPoint pt1, CPoint pt2 )
{
  CDC* pDC = GetDC();
  CPen NewPen(PS_SOLID, m_PenWidth, rgb[m_PenColor]);
  CPen *pOldPen = pDC->SelectObject ( &NewPen );
  CPen *pOldPen2 = m_dcPlot.SelectObject( &NewPen ); <-- 追加

  ・・略・・

  pDC->SelectObject ( pOldPen );
  m_dcPlot.SelectObject( pOldPen2 ); <-- 追加
  ReleaseDC(pDC);
}


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました