C# 非常小的位图返回无效参数

C# 非常小的位图返回无效参数,c#,winforms,bitmap,resolution,C#,Winforms,Bitmap,Resolution,编辑-已解决? 重新启动VS后。。。这个例外似乎已经完全消失了。这种事再也不会发生了。所以。。。问题解决了吗?我想是吧 OP 在我的应用程序中,我试图创建一个大小为1366x706的位图。但是,当我尝试将其绘制到表单上时,它返回一个“参数无效”异常 经过阅读,我了解到参数错误通常意味着C#无法为位图分配足够的内存。然而,1366x706的分辨率似乎没有那么高 在磁盘上,1366x706映像只占用2.5MB。这对WinForms来说太大了吗 编辑 代码: 如果你需要更多的信息,请随时告诉我 编辑2

编辑-已解决?

重新启动VS后。。。这个例外似乎已经完全消失了。这种事再也不会发生了。所以。。。问题解决了吗?我想是吧

OP

在我的应用程序中,我试图创建一个大小为1366x706的位图。但是,当我尝试将其绘制到表单上时,它返回一个
“参数无效”
异常

经过阅读,我了解到参数错误通常意味着C#无法为位图分配足够的内存。然而,
1366x706
的分辨率似乎没有那么高

在磁盘上,
1366x706
映像只占用
2.5MB
。这对
WinForms
来说太大了吗

编辑

代码:

如果你需要更多的信息,请随时告诉我

编辑2

只要调整大小因子不等于1.0,也会产生该错误

堆栈跟踪:

System.ArgumentException: Parameter is not valid.
at System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format)
at System.Drawing.Bitmap..ctor(Int32 width, Int32 height)
at Paint_Test.Form1.resizeImageByFactors(Image i, Single resizeFactorX, Single     resizeFactorY) in c:\Users\ApachePilotMPE\Documents\Visual Studio 2012\Projects\Paint     Test\Paint Test\Form1.cs:line 273
“无论哪种方式,发布的代码都不会为您的用户生成错误 观众。要么数字不正常,要么你的形象不正常 有效。我们看不到的东西。–LarsTech“

嗯,看来你的错误与你在这里发布的代码无关

我认为这与计算XY大小因子的方式有关。如果您仍在这样做:

resizeFactorX = (float)(this.ClientSize.Width / 300.0);
如果宽度<300,您将得到0

正如你所说:

“我发现应用程序在位图的任何时候都会抛出此错误 大于创建表单的ClientSize

之所以会出现这种情况,是因为宽度是一个int,并且您在int/float除法之后进行强制转换,结果是一个int。您必须在除法之前将int强制转换为float

正确的方法:

resizeFactorX = ((float)this.ClientSize.Width) / 300;

我希望这能解决你的问题。:)

这个尺寸当然不会太大。请显示您的代码。已将代码添加到OPS中,哪一行会引发错误?如果可以的话,发布stacktrace。您是否检查了将浮点转换为整数的结果是否正确?
float resizeFactorX=4.553333
不会编译,这使得其余部分也变得可疑/不可靠。
resizeFactorX = ((float)this.ClientSize.Width) / 300;