保存图片框图片
Posted
技术标签:
【中文标题】保存图片框图片【英文标题】:Save picture box image 【发布时间】:2013-01-27 09:21:14 【问题描述】:我已经编写了这段代码,但它会引发一般错误
“对象引用未设置为对象的实例。”
我相信这是因为我试图保存 pictureBox.Image
而没有实际设置图像。如何保存pictureBox
中的图像?
// Left Arm Rear
bmp = new Bitmap(4, 12);
g3 = Graphics.FromImage(bmp);
g3.DrawImageUnscaled(pictureBoxSkin.Image, -52, -20, bmp.Width, bmp.Height);
g2 = pictureBoxLabel.CreateGraphics();
bmp.RotateFlip(RotateFlipType.RotateNoneFlipX);
g2.DrawImageUnscaled(bmp, 28, 20, bmp.Width, bmp.Height);
// Back
bmp = new Bitmap(8, 12);
g3 = Graphics.FromImage(bmp);
g3.DrawImageUnscaled(pictureBoxSkin.Image, -32, -20, bmp.Width, bmp.Height);
g2 = pictureBoxLabel.CreateGraphics();
bmp.RotateFlip(RotateFlipType.RotateNoneFlipX);
g2.DrawImageUnscaled(bmp, 32, 20, bmp.Width, bmp.Height);
pictureBoxLabel.Image.Save(openFileDialog1.InitialDirectory + Path.GetFileNameWithoutExtension(openFileDialog1.FileName) + "_label.Png");
【问题讨论】:
您确实尝试使用调试器单步执行此代码并找到引发异常的行。您还使用了两个不同的控件pictureBoxSkin.Image
和pictureBoxLabel.Image
,这是故意的吗?
两张图片是故意的。引发错误的行是底部的保存行。就像我说的那样,我认为这是因为我试图将图像保存在 pictureBoxLabel 中而没有为其分配图像。它有一个图像,但它是使用 creategraphics 添加的。保存创建的图形的正确行是什么?
如果您已经知道它会引发错误,那么一行内容太多了。在上面的行中组合文件名。仅使用字符串作为参数调用Save
以更接近错误。
感谢您的回复,您可以查看下面的回复吗?
【参考方案1】:
如果NullReferanceException
在最后一行抛出,则有几个可能性;
pictureBoxLabel.Image.Save(openFileDialog1.InitialDirectory + Path.GetFileNameWithoutExtension(openFileDialog1.FileName) + "_label.Png");
pictureBoxLabel
可以是 null
。
openFileDialog1
可以是 null
。
在调试时检查这些对象。
但如果pictureBoxLabel
为null,则可能在这一行也抛出NullReferanceException
;
g2 = pictureBoxLabel.CreateGraphics();
所以,我的钱是 openFileDialog1
是 null
。
【讨论】:
openFileDialog 很好。如果我将图片框对象换成位图对象,它会将文件保存到正确的位置,因此文件路径很好。我认为问题在于pictureBoxLabel.Image 为空。当代码运行时,它会分析pictureBoxSkin.Image,重新排列它并将其绘制到pictureBoxLabel 上,所以在WinForm 上我在pictureBoxLabel 中看到一个图像。但我实际上并没有设置 pictureBoxLabel.Image 属性。如何保存我在 WinForm 的框中看到的图像? @luigivampa 检查来自msdn.microsoft.com/en-us/library/…的图像属性以上是关于保存图片框图片的主要内容,如果未能解决你的问题,请参考以下文章