■ グラフィックス                                                         

 

 


■ フォーム表示時のフォームへの直接描画と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の左上
                        }

 


<実行結果>


■ 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() { }