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