new Bitmap(15000, 15000)报“参数无效”,宽度和高度的最大限制是多少

zcdg909 2009-05-18 06:42:50
new Bitmap(15000, 15000)报“参数无效”,宽度和高度的最大限制是多少
...全文
1611 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
悟空cc 2009-11-19
  • 打赏
  • 举报
回复
测试一下程序是否能正常打开图像的数量!
private void button10_Click(object sender, EventArgs e)
{
//测试 待建图片大小
int dw =int.Parse(textBox2.Text);
int dh = int.Parse(textBox3.Text);
//最大打开次数
int n = int.Parse(textBox4.Text);
//实际打开次数
int i = 0;
while (true)
{
try
{
i++;
Bitmap dx = new Bitmap(dw, dh);
}
catch
{
MessageBox.Show("打开数量:"+i.ToString());
break;

}
if (i == n)
{
MessageBox.Show("达到最大值:" + n.ToString());
break;
}
}

GC.Collect();
}
悟空cc 2009-11-18
  • 打赏
  • 举报
回复
结果2:18244 机器 vista 内存 2G

win2003 也比 xp打开的图像大, 其他系统没测试过!有兴趣的发上来!特别是win7 win2008的!

出错提示是:

在 System.ArgumentException 中第一次偶然出现的“System.Drawing.dll”类型的异常

看来这个错误与系统有关!
期待高手给个结论!
悟空cc 2009-11-17
  • 打赏
  • 举报
回复
结果:11202 机器 xp sp3 内存 2.5G 。net 3.5
dyshadow 2009-05-19
  • 打赏
  • 举报
回复
感觉用循环作的话,内存会释放不干净,导致结果变化。
这个只是大概的想法。你可以在内存不同的机器上尝试下。一起讨论,一起进步。
wuyq11 2009-05-18
  • 打赏
  • 举报
回复
zcdg909 2009-05-18
  • 打赏
  • 举报
回复
如果这样:
for (int i = 1; i < 15000; i++)

结果是:1110*1110
zcdg909 2009-05-18
  • 打赏
  • 举报
回复
如果这样:
for (int i = 500; i < 15000; i++)

结果是:1144*1144
zcdg909 2009-05-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dyshadow 的回复:]
我做了一个TEST,感觉跟内存大小有关系你可以尝试一下:


C# code
private void button6_Click(object sender, EventArgs e)
{
int increment = 1000;

for (int i = 1; i < 15000; i += increment)
{
Bitmap bmp = null;
try
{
bmp = new Bitmap(i, i);


[/Quote]

先生给出了不错的启示。谢谢!
我这样:

private void button6_Click()
{
for (int i = 10000; i < 15000; i ++)
{
Bitmap bmp = null;
try
{
bmp = new Bitmap(i, i);

}
catch
{
MessageBox.Show(i.ToString());
break;
}
finally
{
bmp = null;
GC.Collect();

}
}
}

结果是:10002*10002
assky124 2009-05-18
  • 打赏
  • 举报
回复
2000多*1000多吧
dyshadow 2009-05-18
  • 打赏
  • 举报
回复
我做了一个TEST,感觉跟内存大小有关系你可以尝试一下:


private void button6_Click(object sender, EventArgs e)
{
int increment = 1000;

for (int i = 1; i < 15000; i += increment)
{
Bitmap bmp = null;
try
{
bmp = new Bitmap(i, i);

}
catch
{
i -= increment;
increment /= 2;
if (increment == 0)
{
MessageBox.Show(i.ToString());
break;
}
}
finally
{
bmp = null;
GC.Collect();

}
}
}


我算出来是10587 X 10587

111,077

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧