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