需要在picture中画出3万个点,并且需要支持放大,我采用的方法是放大pictureboxde的width,这样点距就随之放大,可是如果将autoredraw设置为true的话,放大的倍数就有限;如果设置为false,就需要在paint事件中自己用代码重画,这就有一个刷新问题,点太多,所以画得比较慢,好象用API也快不了多少。WHO有好的办法?高分求

解决方案 »

  1.   

    三万不算很多啊,随便一张小图都上十万象素,处理起来也不会感觉很慢啊,
    你可以创建一个Memory DC,在它里面做绘制工作,
    显示的时候BitBlt到PictureBox中就可以了,
    即Paint事件里面只放一个BitBlt函数就ok了,刷新很快的
      

  2.   

    完全同意canyqf()的观点,只用Picture的DC实在很慢,尽量在内存里进行操作
      

  3.   

    可以尝试这样解决:
    用一个picture1(autoredraw=ture,visible=false)保存原始图,它对用户是不可见的。
    在用户区,使用picture2(autoredraw=false)来显示用户需要看到的处理图形。你首先对图像画点在Picture1中进行,picture2中使用
        picture2.PaintPicture Picture1.Picture, X1, , w1 * 倍数, h1 * 倍数, X2, Y2, w2 * 倍数, h2 * 倍数, vbSrcCopy来进行放大和缩小处理
      

  4.   

    上边的方法不行啊,算了,我转成EXCEL,让微软去处理吧,我发现在EXCEL里边也一样是刷新比较慢,呵呵/谢谢楼上的各位,这就放分