我在程序中使用了10组SSTab,每个SSTab包含20个Picture,在给这些Picture绘制坐标时,VB提示"不能创建 AutoRedraw 图象",而我将SSTab改为5组(只给100个Picture绘制坐标),程序即可正常运行,请高手指教,如何解决这个问题,谢谢!

解决方案 »

  1.   

    楼上的言之有理,只处理当前活动页就可以了啊。另外,“在给这些Picture绘制坐标时,VB提示"不能创建 AutoRedraw 图象"”,我分析楼是使用了API创建内存图像了吗?或者将PictureBox的AutoRedraw设置为True?如果是前者,那么及时释放无用的内存句柄,如果是后者,那么建议不要设置此属性为真,很占资源。
      

  2.   

    谢谢各位提出的建议,这是我们公司的一个程序,它的要求就是同时显示200个不同模块的测量值,所以我才设置了200个PictureBox,开始没有设置AutoRedraw的值,导致PictureBox无法绘制坐标,后来将AutoRedraw的值设置为True,就出现了上述问题,各位有什么好的办法,请指教,谢谢了!
      

  3.   

    你们的意思是不是让我在选中某个SSTab时,才对里面的PictureBox绘制坐标,有没有一次就可为200个PictureBox绘制坐标的方法,谢谢各位了!
      

  4.   

    同时绘制200个PictureBox,而你每页SSTab只显示20个,而其余180个根本就看不到,你绘制它们有什么用呢?Re: "开始没有设置AutoRedraw的值,导致PictureBox无法绘制坐标"
    还是建议不要将AutoRedraw设置为True,同时要求只绘制当前可见页中的20PictureBox,将绘制过程写在PictureBox的Paint事件中。如果你的绘图很复杂,看起来有闪烁,你可以在内存中建立绘图场景来实现绘图缓冲,不用时就释放,这样即可以减少闪烁,也可以减少资源。
      

  5.   

    我想应该是图片太多,因为如果只给100个PictureBox绘制坐标就可以正常运行,而且我仅仅在每个PictureBox里绘制坐标。
      

  6.   

    你为什么要一下子将那些根本看不到的也画出来呢?如果你只绘制当前页,你还可以动态设置AutoRedraw属性,也就是将当前活动的设置为True,非活动的设置为False即可
      

  7.   

    你设计程式真有意思,让你显示200个不同模块的测量值就用200个PictureBox,那让你显示20000不同模块的测量值怎么办?难道是用1000组SSTab,每个SSTab包含20个Picture吗?你这就太牛B了吧!屁服啊!其实这种问题都采用分页方式,先显示几个,画相应的图示;要看下几个的时候再调入相应的数据,画相应的图示。这样没有脱节的感觉,一下子显示200个,就算能显示,时间要耗多久,黄花菜都凉了。
      

  8.   

    请问songyaowu,“如果你的绘图很复杂,看起来有闪烁,你可以在内存中建立绘图场景来实现绘图缓冲,不用时就释放,这样即可以减少闪烁,也可以减少资源。”具体怎么实现,谢谢了!
      

  9.   

    如果你从没用过API建场景,你可以用我最后说的方案,就是仅将当前页中的Picturebox的AutoRedraw设置为真,这样就由VB自动为您创建了临时场景了。你即可以省去自已写代码的麻烦,又可以解决问题。