• ベストアンサー

pictureBoxに落書きするには・・・

vc++のマネージ形式で、buttonを使ってON/OFFの機能をつけて、pictureboxにマウスで落書きしたいんですが、どのプロパティを使えばいいかわかりません。 Penか、Graphicsのプロパティを使えばいいんですか? 何かいい例あったら教えてください。

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

  • ベストアンサー
回答No.1

 こんばんは。回答が付かないようですので、参考程度の回答をさせていただきます。  MSDNでも、落書きプログラムと思しきマウス処理の一部が載っていました。  http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.mousebuttons(VS.80).aspx  以下はMSペイントブラシの様に、マウスのドラッグでグニャ~っと、線を引きます。左ボタンで緑、右ボタンで赤です。  関数はピクチャーボックスプロパティの「イベント→マウス」の場所でそれぞれに対応させてください。 //メンバ変数 cli::array<PointF>^ m_arrPt; Graphics^ m_gfx; Pen^ m_pen; bool m_bCaptured; //マウスが押された瞬間 private: System::Void OnMouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { Color color = Color::Green; if(e->Button == System::Windows::Forms::MouseButtons::Right) color = Color::Red; m_bCaptured = true; m_gfx = pictureBox1->CreateGraphics(); m_pen = gcnew Pen(color); m_arrPt = gcnew cli::array<PointF>(2); PointF pt = PointF(e->X, e->Y); m_arrPt->SetValue(pt, 0); m_arrPt->SetValue(pt, 1); m_gfx->DrawPolygon(m_pen, m_arrPt); } //マウスが話された瞬間 private: System::Void OnMouseUp(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { m_bCaptured = false; } //マウスを動かしている最中 private: System::Void OnMouseMove(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { if(!m_bCaptured)return; PointF pt = PointF(e->X, e->Y); m_arrPt->SetValue(pt, 1); m_gfx->DrawPolygon(m_pen, m_arrPt); m_arrPt->SetValue(pt, 0); }