首先,你的先了解下绘图的基础才行。
每个要显示的windows窗口都有个内存dc(也就是上面说的设备)的。不过dc 不一定对应这一个窗口,比如内存dc(常用与双缓存,解决闪烁问题)。
打个比喻,如果你想在一个窗口上面绘图,你就的先获取到改
窗口的dc(可以通过窗口句柄获取到)。获取到该dc 后,你就可以在这个dc上通过gdi 那套函数来对改dc进行绘图了,不过一般不会这样做,因为如果有大量绘图操作的时候,就会出现闪烁了。
所以一般都用双缓冲的做法了。也就是先创建一个内存dc,先把图像绘制到该内存dc中,然后,再把通过BitBlt把信息绘图进窗口dc(上一段红色提到的)。这样就很好的解决闪烁问题了。
至于BitBlt的各个函数,其实没有什么好说的,如果你觉得官网的看不懂,那就得打好英语基础了。
你上面的用法就是把bufdc 上面的内容绘图进mdc内,如果mdc 是一个窗口dc,那么就能够显示出来了。
你用了SCRAND,也就“Combines the colors of the source and destination rectangles by using the Boolean AND operator.”。颜色and操作,也就是源和目标的颜色值进行and 操作,绘图进目标dc(比如源颜色#00ff00,目标#112233,那么结果是0x00ff00 & 0x112233=0x002200)。常用的是SRCCOPY 直接拷贝。