我想实现一个类似于连连看那种界面,即窗体上有很多小图块,每个小图块能响应事件并能更改自身样式.
我现在的方法是:将小图块作为一个控件,从Control继承,在控件上绘图,然后将几十个控件放到主窗体上.
现在的问题是:主窗体显示控件时速度慢,且闪烁.尤其是当窗体被其他程序遮挡后需要重绘时,简直惨不忍堵.
我知道双缓冲技术可以解决绘图的闪烁问题,但我这里不知道要怎样应用这个技术,因为不是直接绘图.
如果采用直接绘图方式,则每个小图块又如响应事件和改变样式呢?
请大家给点思路,谢谢

解决方案 »

  1.   

    这种做法不好,目前.NET里20个控件以上就开始慢了,何况连连看是N*M参考我以前写的方块程序
    http://download.csdn.net/source/162553主要如何提高绘制的速度
    连连看的区域判断和连线判断都是简单的事情
      

  2.   

    this.SuspendLayout();中间写绘制控件代码.this.ResumeLayout(false);
    this.PerformLayout();每次OnPoint的时候调用一下OnFlash()可以有效防止闪烁.
      

  3.   

    楼上说的很对,this.SuspendLayout();表示挂起界面显示,期间发生的绘制的内容只会在内存中存在,绘制完成后再调用this.ResumeLayout(false);this.PerformLayout();一次性显示出来。这样就不会闪烁了。
    InitialComponents()里面就是这么做的