光栅运算疑问:VBNOTSRCCOPY、SRCAND、SRCPAINT等运算倒底会产生什么样的效果?
BitBlt的参数dwRop设为下值时,
VBSRCPAINT,通过OR操作符将源和目标矩形区域的颜色合并。
VBSRCAND,通过使用AND(与)操作符来将源和目标矩形区域内的颜色合并。
VBSRCINVERT,通过XOR(异或)操作符将源和目标矩形区域的颜色合并。
VBNOTSRCCOPY,将源矩形区域颜色取反,并拷贝到目标矩形区域。
这其中的源和目标倒底是怎样or\and\xor\not的,倒底是产生什么样的效果,有人能给讲讲么?半路和尚,实在想不通。
学了一个例程,有一段代码如下,其中hmaskdc和hInvertMaskDc分别是由picture1生成的蒙板和反转蒙板(或底片),调试都能正常生成,但是执行下面的3行语句就没了反应。注:picture2、picture1内提高预载入彩色图片,picture2尺寸大于picture1。
BitBlt Picture2.hDc, 0, 0, dx, dy, hMaskDC, 0, 0, vbSrcAnd
BitBlt Picture1.hDc, 0, 0, dx, dy, hInvertMaskDC, 0, 0, vbSrcAnd
BitBlt Picture2.hDc, 0, 0, dx, dy, Picture1.hDc, 0, 0, vbSrcPaint
捉摸着这两个问题可能有很大关联,第1个问题应是关键,所以就一起放上来了,希望有GDI高手能帮助解答一下。