<7>VC++で画像をリサイズしてみよう。

(1)Windowsフォームアプリを作成する。

(2)フォームに、ラベル2つと、numericアップダウン2つと、ボタンを配置する。

(3)ウインドウをダブルクリックする。

以下のようにプログラミングする。

#pragma endregion

    private: Image^ img;

    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
        label1->Text = L"幅";
        label2->Text = L"高さ";
        numericUpDown1->Maximum = 1000;
        numericUpDown1->Value = 200;
        numericUpDown2->Maximum = 1000;
        numericUpDown2->Value = 150;
        button1->Text = "画像の選択";
    }

(4)ボタンをダブルクリックする。

以下のようにプログラミングする。

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
        String^ wstr = "";
        if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) {
            wstr = openFileDialog1->FileName;
        }
        try {
            img = Image::FromFile(wstr);
        }
        catch (Exception^ ex)    {
            ;
        }
        Invalidate();
    }

(5)フォームのペイントイベントをプログラミングする。

Paintの右側をダブルクリックする。

以下のようにプログラミングする。

private: System::Void Form1_Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e) {
        int picWidth = (int)numericUpDown1->Value;
        int picHeight = (int)numericUpDown2->Value;
        try
        {
            e->Graphics->DrawImage(img,10,40,picWidth,picHeight);
        }
        catch (Exception^ ex) { }
        finally { }
    }

(6)numericアップダウンボタン1をダブルクリックして、下のコードをプログラミングする。

    private: System::Void numericUpDown1_ValueChanged(System::Object^  sender, System::EventArgs^  e) {
            Invalidate();
    }

(7)numericアップダウンボタン2をダブルクリックして、下のコードをプログラミングする。

    private: System::Void numericUpDown2_ValueChanged(System::Object^  sender, System::EventArgs^  e) {
            Invalidate();
    }

(8)『デバッグ』→『実行』をクリックします。

(8)画像の選択ボタンをクリックして、画像を選びます。

(9)幅の数値を変えると、オオハシが太りましたね。

今回は、以上で終了です。