我做的一个应用程序。。
有六七个pictureBox 
每次加载图片的时候,感觉很快,而不是一下子全出来。。
而背景图比这还大,显示就快多了。。如何解决。。

解决方案 »

  1.   

    可以考虑多想程
    以及backgroundworker
      

  2.   

    图片是在运行时加载还是在设计时选取的?
    如果是在运行时加载的,在初始化六个picturebox之前,调用 this.SuspendLayout();完成后再调用this.ResumeLayout(false); 减少界面刷新;如果实际图形文件较大,可以考虑嵌入资源或通过双缓存预加载到内存中,使用时直接给picturebox
      

  3.   

    有一点我不明白,为什么背景图多大,都没有问题。。
    而PICBOX 小小的图加载也会有延时
      

  4.   

    运行时读取,就说明没有编译。
    没有编译的当然慢了。。
    设成背景的快,说明是已经编译过了。
    要想快,可以尝试把图片放在资源文件里。 Resource ...
      

  5.   

    a、如果是从硬盘读取的画
    硬盘的读取速度可能是个瓶颈b、可能lz希望同时显示7张图片,可以先定义Image类型的私有变量
    用GetThumbnailImage方法得到图片的缩略图。
    然后,将每个Image类型的变量赋值给7个pictruebox控件,这样就同步了。
    因为,7个pictruebox控件在直接从硬盘加载时,代码的执行是有先后顺序的,而且是同类型控件的相同方法的调用,所以会不同步的显示。
      

  6.   

    VB 的IMAGE 就加载图片时就不会有这问题
      

  7.   

    要是放在资源文件里加载的话,速度就比较快,要是从磁盘目录里加载速度就慢
    就要预先加载到一个IMAGE数组里,要的时候,再从数组里给要是放在资源文件的话(因为生产EXE文件的话会一起包含在EXE文件里),
    可以用一个线呈
    例如:
    1.创建一个全局的EventWaitHandle ew= new  (.....)//俺没看帮助,忘了构造函数
    2.threadProc需要一个死循环,
    3.在其他线程里,如果特定的条件发生就::ew.set();
    4.线程不能被abort,一旦被终止,就不能继续使用该线程了,除非在西够函数里调用
     void threadProc(){
    do{
    ew.wait();//无限期等待,等待其他线程发来的set()switch(pictrueIndex){
    pictrueIndex//代指图片的索引
    case 0: //index代指图片的
    //do work;
    breal;
    case 1:
    //do other work;
    break;
    }
    }while(true);}
      

  8.   

    双缓存技术 doubleBuffer可以解决
                this.SetStyle(ControlStyles.AllPaintingInWmPaint |
                    ControlStyles.DoubleBuffer |
                    ControlStyles.UserPaint, true);
      

  9.   

    我发现如果FROM 如果不加上背景图,图片刷新会很快
      

  10.   

    看这里:
    如何加速GDI+处理图片速度?