上述语句显示无效参数,这个参数的范围有限制吗,哪位大侠指点一下

解决方案 »

  1.   

    public Bitmap(
    int width,
    int height
    )就是int的范围
      

  2.   

    看了一下Bitmap是类,不是struct。不是在堆栈上分配的。不是堆栈溢出。msdn也没明确说明注意事项。不知道。
      

  3.   


    仔细帮你分析一下。
    Bitmap的构造函数width,height都是Int32类型。支持长度为0xFFFFFFFF。换算十进制为:
    2147483647 ~ -2147483647
    所以你的数据不存在int范围不够的问题。反编译代码看
    public Bitmap(int width, int height)
    {
        this._Init(width, height);
    }private void _Init(int cx, int cy)
    {
        IntPtr ptr;
        PAL_ERROR ar = GL.Create(cx, cy, out ptr);
        if (ar >= PAL_ERROR.Success)
        {
            base.m_cx = cx;
            base.m_cy = cy;
            base.m_how = ptr;
        }
        MISC.HandleAr(ar);
    }[DllImport("AGL", EntryPoint="@80")]
    public static extern PAL_ERROR Create(int cx, int cy, out IntPtr howNew);
    并没有任何限制长度的部分,应该出在这个外部调用的地方:Create。
    进一步的代码无法跟踪。
      

  4.   

    理论上讲应该是int的范围,但实际是受内存大小限制的,托管的程序如果一次性申请不到几百MB内存,就报这个错误了。。我测试过一个10000*10000的,第一次成功,第二次内存申请不到,就报这个错了,如果中间我手动进行内存回收,第二次就不会报错,这应该是CLR的保护行为,以为是恶意使用内存吧(我猜的。),在C++下应该不存在此问题,只要 内存足,他就会分配,不足,卡死!!
      

  5.   

    请问LS分存四块,拼到一起怎么拼呢?新建一块画布容纳是不可能了,难道可以用Stream吗?