基本情况:
在picturebox中用line方法画直线,然后提供放大功能,就是添加按钮,点击的话就放大picturebox的宽度,然后重新调用line方法,这样直线就随之放大了/picturebox的autoredraw属性设定为true
出现问题:
  当放大到一定程度时,出现错误“480”,说“Autoredraw不能创建图象”/
怀疑是不是autoredraw对图象的大小有限制?将这个属性设为false后就没有问题/
问题:
   这个限制具体是什么?怎样来避免?(限制放大倍数?那也需要知道这个限制的上限啊?)
部分代码:
   Pic.Line (Pic.Width * (1 / 12), Pic.Height * (6 / 7))-(Pic.Width * 
                    (11.5 / 13), Pic.Height * (6 / 7)), vbBlue
   放大时,改变pic.width的大小

解决方案 »

  1.   

    pic.width不能超出窗体的最大宽度
      

  2.   

    楼上的,实际是可以的/我的问题好像可以排除pic.width的问题,因为将autoredraw设为false后,就一直可以放大/
      

  3.   

    我用下列代码作测试:
    Private Sub Command1_Click()
        Pic.Width = Pic.Width + 100
        Pic.Height = Pic.Height + 100
        Pic.Line (Pic.Width * (1 / 12), Pic.Height * (6 / 7))- _
            (Pic.Width * (11.5 / 13), Pic.Height * (6 / 7)), vbBlue
    End Sub
    无论AutoRedraw无何设置,PictureBox增大都没有出现错误。不知你的代码是怎样的,怎么会出错?
      

  4.   

    你的增大速度太慢,试试pic.width=pic.width*2
      

  5.   

    用PAINTPICTURE方法也可以将图形放大
      

  6.   

    直到超出了Pic.Width定义范围&H7FFFFFBF,没出现Autoredraw不能创建图象
      

  7.   

    在MSDN中的解释是没有足够的内存创建Autoredraw图象,但你可以这样解决:
    先使picture1.autoredraw=false
    再定义一个显示的函数:
    sub showpic()
     ....
      Pic.Line (Pic.Width * (1 / 12), Pic.Height * (6 / 7))-(Pic.Width * 
                        (11.5 / 13), Pic.Height * (6 / 7)), vbBlue
     ...
    end sub然后在picture1的Paint事件中调用showpic()'这样的话,VB就不用内存保存Autoredraw图象,就不会报这个错了,但是在showpic中你要尽量的优化代码,我个人意见是用api,它们对图像的操作比VB快N倍!