c# 中new一个位图,有好几种方法,就其中一种方法拿出来大家讨论讨论。Bitmap bt = new Bitmap(int x,int y);x,y大小限制跟什么有关系。自己试了试,xy取同样的值,win7 64位系统4G内存,当x,y取18000的时候就抛出异常,异常是参数无效,而并非内存超限,有哪位大牛知道,这个构造函数参数到底跟啥有关系?每个像素默认的大小是几个Byte?PS:18000并不是第一次跑异常,17000*17000参数有效,我是每次增加1000试的。

解决方案 »

  1.   

    和操作系统乃至显示卡驱动都有关系。之所以和显示卡驱动有关系我想可能是因为它会保留一些gdi资源,并且不同的卡数量不同。你尝试开几个qq看看能绘的图是不是变小了。
      

  2.   

    这个应该和内存分配函数有关,因为这样分配的图像数据在内存中必须是连续的。而系统能非配的连续内存的多少和很多因素有关。我自己写图像库用的GlobalAlloc 分配内存,一般能分配到15000*15000*3大小的图像。
      

  3.   

    new Bitmap(w, h)生成的是32bpp的图,每像素4byte,18000x18000大约占1.2G的内存。。
      

  4.   

    bitmap.PixelFormat获取到了。