0

プログラムを実行してイメージをロードしようとすると、次のエラーが表示されます。

タイプ 'System.ArgumentException' の初回例外が System.Drawing.dll で発生しました タイプ 'System.ArgumentException' の未処理の例外が System.Drawing.dll で発生しました

追加情報: パラメータが無効です。

これが私のコードです:

基本的には、numericUpDown、ボタン、openFileDialog、pictureBox があります。ユーザーは、ロードする画像に応じて、numericUpDown の値を変更します (ユーザーは openFileDialog を開く必要はありません)。たとえば、ユーザーが numericUpDown の値として「3」を選択した場合、openFileDialog の FileName は次のようになります。

Public:
    void Set_FilePath()
    {
        int n = (int)numericUpDown1->Value;

        switch (n)
        {
        case 1: openFileDialog1->FileName = "C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg"; break;
        case 2: openFileDialog1->FileName = "C:\Users\Public\Pictures\Sample Pictures\Desert.jpg"; break;
        case 3: openFileDialog1->FileName = "C:\Users\Public\Pictures\Sample Pictures\Hydrangeas.jpg"; break;
        case 4: openFileDialog1->FileName = "C:\Users\Public\Pictures\Sample Pictures\Jellyfish.jpg"; break;
        case 5: openFileDialog1->FileName = "C:\Users\Public\Pictures\Sample Pictures\Koala.jpg"; break;
        case 6: openFileDialog1->FileName = "C:\Users\Public\Pictures\Sample Pictures\Lighthouse.jpg"; break;
        case 7: openFileDialog1->FileName = "C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg"; break;
        case 8: openFileDialog1->FileName = "C:\Users\Public\Pictures\Sample Pictures\Tulips.jpg"; break;
        }

    }
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 Bitmap^ myImage;

                 Set_FilePath();
                 myImage = gcnew Bitmap( openFileDialog1->FileName );
                 pictureBox1->SizeMode =                  PictureBoxSizeMode::StretchImage;
                 pictureBox1->Image = dynamic_cast <Image^> (myImage);

         }

それを修正する私の試み:

画像の方向を正しくコピーしていないと思いました。だから私はコードを次のように変更しました:

if(openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) 
             {
                 MessageBox::Show(openFileDialog1->FileName);
                 myImage = gcnew Bitmap( openFileDialog1->FileName );
                 pictureBox1->SizeMode = PictureBoxSizeMode::StretchImage;
                 pictureBox1->Image = dynamic_cast <Image^> (myImage);
             }

これは完全に機能しています。また、openFileDialog のファイル名を示すメッセージ ボックスが表示されます...正しい画像の方向... プログラムのどこが間違っているのかわかりません。問題は、openFiledialog を表示させたくないということです。

(私は Visual Studio C++ 2010 を使用しています。アプリケーションは Windows 形式で作成されています)。ありがとう..

4

1 に答える 1