你说的兼容DC应该是内存DC,使用的原因是可以防止绘图时的屏幕抖动,深入学习后应该会明白的,这种方法也就是所谓的“双缓冲”。

解决方案 »

  1.   

    如果你直接在pDC上画很多线或者文字或者图片,那么你的显示区域就会闪动。闪动的原因是因为你的程序执行有先后,先画一个再画一个,少的时候不影响,当数据大时候就会非常明显。内存DC就很好的解决了这个问题,你所把有图形都画在内存DC上,再最后一起贴到pDC上,就不会闪了。这就是是所谓的双缓存。
      

  2.   

    兼容DC也叫内存DC,就是内存中的一段buf,你可以理解这段buf是给显卡用的数据。这里用到的是双缓存绘图技术,为了避免频繁绘图导致屏幕闪烁:根据源设备DC创建一个兼容DC,并在这个DC(实际上是兼容位图)上把绘图操作全部绘制完,然后再一次性拷贝到源设备DC上。之所以这样做会避免频繁绘图导致屏幕闪烁,你可以这样理解:点、线、面 操作的效率是不一样的,点操作效率最低,面操作效率最高。绘图操作实际上就是逐个点连成线,逐个线构成面;如果不使用内存DC,而是在源DC(实际上就是显示器)上一点一点的绘制,每个绘制点结束势必会造成显示器刷新,而显示器跟不上绘制节奏就导致闪屏的出现。所以,我们先把所有的绘制操作在内存中进行,这个过程中跟屏幕没有半毛钱的关系,当内存DC绘制完之后,把内存DC一气呵(面操作)成拷贝到源DC上,相当于仅有一次绘图操作,那即使你的CPU再烂,一次操作应该是没问题的吧——也就避免了屏幕刷新闪烁了
      

  3.   


    一定要用内存DC的,这是硬性规定,更是良好的编程习惯!绘图实际上是在DC中的位图上来绘制的,这个位图一般情况下是调用CreateCompatibleBitmap创建的兼容位图,也可以是你LoadBitmap生成的位图(使用现有的背景图片)