プログラムを実行してイメージをロードしようとすると、次のエラーが表示されます。
タイプ '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 形式で作成されています)。ありがとう..