■ フォーム表示時のフォームへの直接描画とpictureBoxへの描画
フォームが表示された時に、同時に下記を実行する例です。 @フォームへの直接描画 Aピクチャーボックスへの直接描画 それぞれ Form 及びPictureBoxのPaintイベントの中にコードを描画します。 以下、 Form1.h 抜粋 |
<プログラム例> private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { Graphics^ g = e->Graphics; Pen^ redPen = gcnew Pen(Color::Red, 3); //太さ3の赤ペン SolidBrush^ br = gcnew SolidBrush(Color::Red); //赤のブラシ System::Drawing::Font^ objFont = gcnew System::Drawing::Font("MS Pゴシック", 15); //文字サイズ: 15ドッド g->DrawEllipse(redPen,10,10,30,30); g->DrawString("この赤い円はフォームに直接描画されています",objFont, br, 0,40); //文字描画開始位置(0,40) //基点:フォームの左上 } private: System::Void pictureBox1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { Graphics^ g = e->Graphics; Pen^ bluePen = gcnew Pen(Color::Blue, 5); //太さ5の青ペン SolidBrush^ br = gcnew SolidBrush(Color::Blue); //赤のブラシ System::Drawing::Font^ objFont = gcnew System::Drawing::Font("MS Pゴシック", 20); //文字サイズ: 20ドッド g->DrawEllipse(bluePen,10,10,30,30); g->DrawString("この青い円はpictureBoxに描画されています",objFont, br, 0,40); ////文字描画開始位置(0,40) //基点: pictureBoxの左上 }
|
<実行結果> |
ピクチャーボックスに 直線、円、矩形を描画 |
<プログラム例> private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { // 描画を行うグラフィックスクラスを生成 Graphics^ g = pictureBox1->CreateGraphics(); // 画像の上に文字列を書き込み // System::Drawing::Font^ myFont = gcnew System::Drawing::Font(FontFamily::GenericSansSerif, 14, FontStyle::Bold); // g->DrawString("書き込む文字", myFont, Brushes::Red, 0, 0); // 画像の上に直線を描画 Pen^ blackPen = gcnew Pen(Color::Black, 3); g->DrawLine(blackPen, 0, 30, pictureBox1->Width, 60); // 普通の黒色直線 点1(0,30) 点2(右端,30) g->DrawLine(blackPen, 0, 60, pictureBox1->Width, 30); // 普通の黒色直線 点1(0,60) 点2(右端,30) //太い赤線の描画 Pen^ boldPen = gcnew Pen(Color::Red, 8); // 太い線赤線オブジェクト生成 g->DrawLine(boldPen, 0, 90, pictureBox1->Width, 90); //点1(0,90) 点2(右端,90) //青色の点線の描画 Pen^ dotPen = gcnew Pen(Color::Blue, 5); //青色、線幅5 dotPen->DashStyle = System::Drawing::Drawing2D::DashStyle::Dot; //dotPen->DashStyle = DashStyle::Dot; //この場合以下が必要:using namespace System::Drawing::Drawing2D; g->DrawLine(dotPen, 0, 110, pictureBox1->Width, 110); //一点鎖線の描画 dotPen->DashStyle = System::Drawing::Drawing2D::DashStyle::DashDot; //1点鎖線 g->DrawLine(dotPen, 0, 140, pictureBox1->Width, 140); dotPen->DashStyle = System::Drawing::Drawing2D::DashStyle::DashDotDot; //2点鎖線 g->DrawLine(dotPen, 0, 170, pictureBox1->Width, 170); // //円の描画 Pen^ redPen = gcnew Pen(Color::Black, 3); g->DrawEllipse(redPen, 65, 220, 75,75); //赤線 基点(65,220) 幅×高さ:100×50 SolidBrush^ greenBrush = gcnew SolidBrush(Color::Green); g->FillEllipse(greenBrush, 65, 320, 75, 75); //緑色塗りつぶし 基点(65,220) 幅×高さ:100×50 //矩形の描画 SolidBrush^ redBrush = gcnew SolidBrush(Color::Red); g->DrawRectangle(blackPen, 50, 400, 100, 50); // 四角形を描画する //黒線、基点(50.400)、幅×高さ:100×50 g->FillRectangle(redBrush, 50, 470, 100, 50); // 塗り潰しの四角形を描画する//赤色塗潰し 基点(50,470)、幅×高さ:100×50 }
|
<実行結果> |
フォームに直接描画する場合は、上記のコードで pictureBox1を thisに変更するだけです。 |
<プログラム例> private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { // // 描画を行うグラフィックスクラスを生成 Graphics^ g = this->CreateGraphics(); // 画像の上に直線を描画 Pen^ blackPen = gcnew Pen(Color::Black, 3); g->DrawLine(blackPen, 0, 30, this->Width, 60); // 普通の黒色直線 点1(0,30) 点2(右端,30) g->DrawLine(blackPen, 0, 60, this->Width, 30); // 普通の黒色直線 点1(0,60) 点2(右端,30) //太い赤線の描画 Pen^ boldPen = gcnew Pen(Color::Red, 8); // 太い線赤線オブジェクト生成 g->DrawLine(boldPen, 0, 90, this->Width, 90); //点1(0,90) 点2(右端,90) //青色の点線の描画 Pen^ dotPen = gcnew Pen(Color::Blue, 5); //青色、線幅5 dotPen->DashStyle = System::Drawing::Drawing2D::DashStyle::Dot; //dotPen->DashStyle = DashStyle::Dot; //この場合以下が必要:using namespace System::Drawing::Drawing2D; g->DrawLine(dotPen, 0, 110, this->Width, 110); //一点鎖線の描画 dotPen->DashStyle = System::Drawing::Drawing2D::DashStyle::DashDot; //1点鎖線 g->DrawLine(dotPen, 0, 140, this->Width, 140); dotPen->DashStyle = System::Drawing::Drawing2D::DashStyle::DashDotDot; //2点鎖線 g->DrawLine(dotPen, 0, 170, this->Width, 170); // //円の描画 Pen^ redPen = gcnew Pen(Color::Black, 3); g->DrawEllipse(redPen, 65, 220, 75,75); //赤線 基点(65,220) 幅×高さ:100×50 SolidBrush^ greenBrush = gcnew SolidBrush(Color::Green); g->FillEllipse(greenBrush, 65, 320, 75, 75); //緑色塗りつぶし 基点(65,220) 幅×高さ:100×50 //矩形の描画 SolidBrush^ redBrush = gcnew SolidBrush(Color::Red); g->DrawRectangle(blackPen, 50, 400, 100, 50); // 四角形を描画する //黒線、基点(50.400)、幅×高さ:100×50 g->FillRectangle(redBrush, 50, 470, 100, 50); // 塗り潰しの四角形を描画する//赤色塗潰し 基点(50,470)、幅×高さ:100×50 } |
<実行結果> |
<プログラム例>
main() { }