注册 登录
编程论坛 VC++/MFC

有一个函数不知道怎么用啊这到底是什么意思?

NBABOY 发布于 2014-05-01 20:10, 610 次点击
BitBlt(mdc,x,y,60,60,bufdc,60,0,SCRAND),我希望能说清一点。也就是说,从原始设备到目标设备之后的,屏幕显示,还有其他的一些,状态,嗯,云里雾里的,不明白,希望你能让我明白这个函数的意思。谢谢,
还有SCRPAINT的作用,请不要用网上的那种官方的话回应我我要的是直白的直接的。
4 回复
#2
yuccn2014-05-05 20:27
首先,你的先了解下绘图的基础才行。

每个要显示的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 直接拷贝。
#3
Susake2014-05-07 14:27
gdi+
#4
Susake2014-05-07 14:30
他应该是刚学不久,你讲双缓冲估计他听不懂~~
#5
ylyy201212014-05-09 08:52
学习了,二楼讲的很通俗!
1