描画onPaintで追加の重ね描きをする方法は


はんにゃ  URL  2011-03-05 18:11:20  No: 72423

WindowsXp  VC6.0 MFC  環境です
描画作成のコードを作っています。
現時点では  
マウス操作
void CChildView::OnMouseMove( UINT nFlags, CPoint point )
{//略
//描画内容に変化をを要すると
   Invalidate(FALSE);
  //CWnd::OnMouseMove( nFlags, point );//在ってもなくてもOK,なんの役割するか?未勉強
}// endof void CChildView::OnMouseMove

void CChildView::OnLButtonUp( UINT nFlags, CPoint point )
{//途中略
    Invalidate(FALSE);//このコードでOnPaintを呼んでいるみたい  
}//end of CChildView::OnLButtonUp
あるいは

CParameterDlg::CParameterDlg(CWnd* pParent /*=NULL*/)
  : CDialog(CParameterDlg::IDD, pParent)
{//  ここでも
  Invalidate(FALSE);
//がある

でColorDialogを呼ぶ(新たな場所の描画線の色を変える目的に)
などして  その都度
void CChildView::OnPaint()
{  // TODO: Add your message handler code here
  CPaintDC dc(this); // device context for painting

  CMemDC memDC;  
  memDC.CreateDIBitmap( m_imageSiH, m_imageSiV );// creat an image area in the window
  memDC.FillSolidRect(0, 0, m_imageSiH, m_imageSiV, m_grdColor); //ground color

//略
  // Do not call in the original Why?? for painting messages
  // CWnd::OnPaint(); // CChildView:: この終わりがよくわからない  現行は削除

内で表示を書き換えています。
これを  一部書き終えたら  既存で書いたものに一部分を上書きできるように
変えたいのです。

質問は  Invalidate(FALSE)は再描画するコードで”背景を一旦塗りつぶす必要が無い時に呼ぶ”
と理解していますが、
前の描画内容の一部をそのままで描画するには  どういう方法があるのでしょうか?
簡単なコードを示したいのですが  OnPaint()のどれがエッセンスか  分かりにくく
どのようなところを取り出すと良いか  分かりかねている状態です
なお  実際の絵の最小見本はHPの動画∞です。これは一筆の図ですが、∞∞のような2筆の
色別でloopを描きたいのです。
  
よろしく  ご助言をおねがいします


はんにゃ  URL  2011-03-06 01:28:56  No: 72424

実は  操作上、マウスの位置で描画条件(線の交点)を指定し、それを赤棒で表示しています。そのためには  マウスが新たに移動する度に、その赤棒と表示する  即ち更新しているのです。すると  他の線の描画を残して  新たな線の描画を追加するということは  赤棒の表示の更新と  線の描画要請と食い違うことになるので  課題のようなことはできないかとも  懸念している次第です。
この懸念は正しいでしょうか?  
でも  OnPaint内で  線毎のデータを用意して、各線毎に描くとして  色などはの選択をDialogで行うのはどのようにしたら良いでしょうか?
それと  線の描く(Trace)する開始をやはりマウス位置でしていしているのですが  それも途中で変えるにはどうするのでしょうか


はんにゃ  URL  2011-03-06 01:29:53  No: 72425

実は  操作上、マウスの位置で描画条件(線の交点)を指定し、それを赤棒で表示しています。そのためには  マウスが新たに移動する度に、その赤棒と表示する  即ち更新しているのです。すると  他の線の描画を残して  新たな線の描画を追加するということは  赤棒の表示の更新と  線の描画要請と食い違うことになるので  課題のようなことはできないかとも  懸念している次第です。
この懸念は正しいでしょうか?  
でも  OnPaint内で  線毎のデータを用意して、各線毎に描くとして  色などはの選択をDialogで行うのはどのようにしたら良いでしょうか?
それと  線の描く(Trace)する開始をやはりマウス位置でしていしているのですが  それも途中で変えるにはどうするのでしょうか


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加