Picture1.AutoRedraw=True
但我在Picture1用Line和PSet里画了一幅3000*2000的图,就出现了480错误。
这个问题会在win98下出现,2000、XP没问题我知道可以把属性设置成False,然后在Form_Paint()中画,但问题是我的这个Picture1是不显示的,只是画图,必要时再用BitBlt画到其它地方。有没有办法解决这个问题?
可以用什么补丁获得更多的内存?
有没有既可以保存图像、又可以用Line和PSet的方法?分不够可以加
谢谢

解决方案 »

  1.   

    你自己用CreateCompatibleDC,CreateBitmapIndirect之类的函数在内存里建一个位图吧,象Line,PSet之类的函数都有相应的API函数可以用
      

  2.   

    没遇到过,打补丁了吗?sp5,sp6
      

  3.   

    //你自己用CreateCompatibleDC,CreateBitmapIndirect之类的函数在内存里建一个位图吧,象Line,PSet之类的函数都有相应的API函数可以用经初步证实,AutoRedraw就是用了CreateCompatibleDC。所以估计绿豆的方法也会出错。楼主的问题是要在内存中保留如此大的一张位图,导致内存溢出。想想有没有什么办法分割一下,保存到文件中……
      

  4.   

    设成autoredraw=true,内存消耗很大地~~粗粗翻了一下msdn,发现这么一句
    Windows 95/98: The created bitmap cannot exceed 16MB in size.
    痛苦诶,最大只能16M大小
    ……所以,最好还是分块吧
      

  5.   

    呵呵,在QQ上不是给你说了嘛,自建DC可以实现,最好是与设备无关的DC,这样可以大到7000*7000左右,这个问题一般是太大造成的,如果大于2000*2000一般就出错了,经验。
    分割倒是个办法,没想到……