请问:为什么BitBlt这个API和这个MERGECOPY常量一起使用的时候,对图片好象没有反应呢?
请问:为什么BitBlt这个API和这个MERGECOPY常量一起使用的时候,对图片好象没有反应呢?请热心的朋友,帮帮忙哦!在此,先谢过帮忙的朋友了!Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, _
ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
'Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, _
' ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, _
' ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Const BLACKNESS = &H42 ' (DWORD) dest = BLACK
Private Const DSTINVERT = &H550009 ' (DWORD) dest = (NOT dest)
Private Const MERGECOPY = &HC000CA ' (DWORD) dest = (source AND pattern)
Private Const MERGEPAINT = &HBB0226 ' (DWORD) dest = (NOT source) OR dest
Private Const NOTSRCCOPY = &H330008 ' (DWORD) dest = (NOT source)
Private Const NOTSRCERASE = &H1100A6 ' (DWORD) dest = (NOT src) AND (NOT dest)
Private Const PATCOPY = &HF00021 ' (DWORD) dest = pattern
Private Const PATINVERT = &H5A0049 ' (DWORD) dest = pattern XOR dest
Private Const PATPAINT = &HFB0A09 ' (DWORD) dest = DPSnoo
Private Const SRCAND = &H8800C6 ' (DWORD) dest = source AND dest
Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = source
Private Const SRCERASE = &H440328 ' (DWORD) dest = source AND (NOT dest )
Private Const SRCINVERT = &H660046 ' (DWORD) dest = source XOR dest
Private Const SRCPAINT = &HEE0086 ' (DWORD) dest = source OR dest
Private Const WHITENESS = &HFF0062 ' (DWORD) dest = WHITE
Private Sub Option1_Click()
Dim a As Long
CommonDialog1.ShowColor
a = BitBlt(Picture1.hDC, 0, 0, 300, 300, Picture16.hDC, 300, 300, BLACKNESS)
Picture1.Refresh
End Sub
Private Sub Option2_Click()
Dim b As Long
b = BitBlt(Picture2.hDC, 0, 0, 300, 300, Picture16.hDC, 300, 300, DSTINVERT)
Picture2.Refresh
End Sub
Private Sub Option3_Click()
Dim c As Long
c = BitBlt(Picture3.hDC, 0, 0, 300, 300, Picture4.hDC, 300, 300, MERGECOPY)
Picture3.Refresh
End Sub
Private Sub Option4_Click()
Dim d As Long
d = BitBlt(Picture4.hDC, 0, 0, 300, 300, Picture16.hDC, 300, 300, MERGEPAINT)
Picture4.Refresh
End Sub --------------------编程问答-------------------- ROP码
含义
BLACKNESS
输出黑色
DSTINVERT
反转目的位图
MERGECOPY
用与操作把图案(Pattern)与源位图融合起来
MERGEPAINT
用或操作把反转的源位图与目的位图融合起来
NOTSRCCOPY
把源位图反转然后拷贝到目的地
NOTSRCERASE
用或操作融合源和目的位图,然后再反转
PATCOPY
把图案拷贝到目的位图中
PATINVERT
用异或操作把图案与目的位图相融合
PATPAINT
用或操作融合图案和反转的源位图,然后用或操作把结果与目的位图融合
SRCAND
用与操作融合源位图和目的位图
SRCCOPY
把源位图拷贝到目的位图
SRCERASE
先反转目的位图,再用与操作将其与源位图融合
SRCINVERT
用异或操作融合源位图和目的位图
SRCPAINT
用或操作融合源位图和目的位图
WHITENESS
输出白色
--------------------编程问答-------------------- 这个说明我有,我是想知道:为什么BitBlt这个API和这个MERGECOPY常量一起使用的时候,对图片好象没有反应呢? --------------------编程问答-------------------- http://www.cnblogs.com/del/archive/2008/06/25/1229469.html上有一个Delphi做的bitblt光栅运算效果的演示,好象和vb的效果不同.不仅MERGECOPY,其它也有不少效果和应有效果不一致的.我认为这是VB本身的问题. --------------------编程问答-------------------- 是没反应.这个没办法解决. --------------------编程问答-------------------- 应该有反应的,否则干嘛设置这个常量呢? --------------------编程问答-------------------- MERGECOPY 方式下参数 hSrcDC 与其他方式不一致! --------------------编程问答-------------------- 不明什么意思,再具体点,好吗? --------------------编程问答-------------------- 有什么不一样呢? --------------------编程问答-------------------- --------------------编程问答--------------------
a = BitBlt(Picture1.hDC, 0, 0, 300, 300, Picture16.hDC, 300, 300, BLACKNESS)
b = BitBlt(Picture2.hDC, 0, 0, 300, 300, Picture16.hDC, 300, 300, DSTINVERT)
c = BitBlt(Picture3.hDC, 0, 0, 300, 300, Picture4.hDC, 300, 300, MERGECOPY)
d = BitBlt(Picture4.hDC, 0, 0, 300, 300, Picture16.hDC, 300, 300, MERGEPAINT)
虽然没看到其他代码,但是画图所用的源图片应该是一样的吧!
你做 MERGECOPY 时 Picture4 中有图像吗?
补充:VB , API