运行程序并尝试加载图像时会出现此错误:
System.Drawing.dll 中出现“System.ArgumentException”类型的第一次机会异常 System.Drawing.dll 中出现“System.ArgumentException”类型的未处理异常
附加信息:参数无效。
这是我的代码:
基本上,有一个 numericUpDown、一个按钮、一个 openFileDialog 和一个图片框。用户根据他想要加载的图片更改 numericUpDown 的值(用户不必打开 openFileDialog)。例如,如果用户选择“3”作为 numericUpDown 的值,则 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 形式制作的),任何帮助将不胜感激。谢谢..