Form に Image を描画

C++/CLI で画像ファイルを入力して描画します。
CLI を使えば「ソースプログラム一本」だけで動きます。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. C:\DATA\Cpp\BAT\Form に Image.cpp を utf-8(BOM 有り)でタイプして格納して下さい。
    /*★ Image 画像を描画する    前田 稔 ★*/
    #using <System.dll>
    #using <System.Windows.Forms.dll>
    #using <System.Drawing.dll>
    
    using namespace System;
    using namespace System::Windows::Forms;
    using namespace System::Drawing;
    
    //フォームを作成するクラス
    ref class FormClass : public System::Windows::Forms::Form
    {
      private:
    
      public:
        //Constructor
        FormClass()
        {
            this->ClientSize = System::Drawing::Size(640, 320);
            Paint += gcnew PaintEventHandler(this, &FormClass::MyHandler);
        }
    
        void MyHandler(Object^ sender, PaintEventArgs^ e)
        {
            Bitmap^ img;
            PointF  pnt(20.0, 10.0);
            Graphics^ g = e->Graphics;
            img = gcnew Bitmap("c:\\data\\test\\ffx2s.jpg");
            g->DrawImage(img, pnt);
        }
    };
    
    //★ main() 関数
    int main()
    {
        // メイン ウィンドウを作成して、実行します
        Application::Run(gcnew FormClass());
    
        return 0;
    }
    
  2. Size(640, 320) で画像に合わせてウインドウのサイズを設定します。
    this->ClientSize = System::Drawing::Size(640, 320);
  3. Paint にウインドウを描画するイベントハンドラ(MyHandler)を設定します。
    このようにイベントハンドラに処理を委譲する方法をデリゲート(委譲)と言います。
    Paint += gcnew PaintEventHandler(this, &FormClass::MyHandler);
  4. 画像ファイルを入力して描画するメソッド(MyHandler) の定義です。
    pnt(20.0, 10.0); は画像を描画する座標です。
    gcnew Bitmap() で画像ファイルを入力します。
    画像ファイルは BMP に限らず、JPG や GIF も表示することが出来ます。
    透明色を使った GIF 画像では、透明色が有効になることを確認して下さい。
    g->DrawImage(img, pnt); で画像を描画します。
  5. スタートメニューから[すべてのプログラム][Visual C++ 2005 Express Edition][Visual Studio Tools] [Visual Studio 2005 コマンド プロンプト] から起動します。
  6. 次のコマンドをタイプして下さい。
    ウインドウに画像が描画されます。
    C:\Users\maeda>CD C:\DATA\Cpp\BAT
    C:\DATA\Cpp\BAT>CL WinImage.cpp
    C:\DATA\Cpp\BAT>WinImage.exe
    
  7. "c:\\data\\test\\ffx2s.jpg" が画像が格納されているフォルダーと画像ファイルの名前です。
    ffx2s.jpg の画像が描画されます。

超初心者のプログラム入門(C/C++)