• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vc++のペイント処理。)

VC++のペイント処理で絵が消えてしまう問題を解決する方法

このQ&Aのポイント
  • VC++のマネージ形式でピクチャーボックスにMousDownした時にMouseMoveを使って、絵で落書きする際、元に戻すと絵が消えてしまう問題が発生しています。
  • SetPexelを使ってプログラムを処理し、pictureBoxにMousuDownして絵を書くと点状になる問題があります。
  • 最小化しても絵が消えず、スムーズにかける方法を知りたいです。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

Bitmapにしても DrawPolygonで描画すればいいのですよ 直接描画の場合 grf = pictureBox1->CreateGraphics(); Bitmap描画の場合 grf = Graphics::FromImage( bmp ); といった具合に Graphicsオブジェクトの構築方法を変更します Bitmap描画の際MouseMoveやMouseDownから抜ける前に pictureBox1->Image = bmp; といった具合に描画したBitmapをピクチャーボックスに設定しましょう http://oshiete1.goo.ne.jp/qa4367456.html のコードの中のMouseDown > cap = true; > grf= pictureBox1->CreateGraphics(); > // > // > pen = gcnew Pen(color); > poi = gcnew cli::array<PointF>(2); > PointF pt = PointF(e->X, e->Y); > poi->SetValue(pt, 0); > poi->SetValue(pt, 1); > grf->DrawPolygon(pen, poi); > } の部分を cap = true; // Bitmapを構築 try {   // ビットマップbmpが作成済みかどうかのチェック   int n = bmp->Width; } catch( NullReferenceException^ ex ) {   // 未作成の場合は作成する   bmp = gcnew Bitmap( pictureBox1->Width, pictureBox1->Height ); } // grfの構築方法の変更 // grf = pictureBox1->CreateGraphics();   grf = Graphics::FromImage( bmp ); // //   pen = gcnew Pen(color);   poi = gcnew cli::array<PointF>(2);   PointF pt = PointF(e->X, e->Y);   poi->SetValue(pt, 0);   poi->SetValue(pt, 1);   grf->DrawPolygon(pen, poi);   // ピクチャーボックスの更新   pictureBox1->Image = bmp; } といった具合ですよ MouseMoveの最後にも   grf->DrawPolygon(pen, poi);   poi->SetValue(pt, 0);   // ピクチャーボックスの更新   pictureBox1->Image = bmp; を追加します

関連するQ&A