我正在使用AlphaBlend。没什么特别的。
我的代码在Vista,Windows 7和Windows 8上运行良好,但在Windows XP上运行不正常。
通常AlphaBlend返回1,但在XP上它返回0。 我在2台XP电脑上测试过。
我完全不知所措。
GetLastError返回“Successfully completed”。
我很确定AlphaBlend应该适用于XP。 有没有人知道如何继续?
我的(VB6-)代码是
Dim LBF As Long
Dim bf As BLENDFUNCTION
With bf
.BlendOp = AC_SRC_OVER
.SourceConstantAlpha = 255
End With
Call CopyMemory(LBF, bf, Len(bf)) 'Copy struct into a Long var
(......其他一些东西......)
Dim iRet&
iRet = AlphaBlend(Me.Picture1.hdc, 0, 0, lDestWidth, lDestHeight, lOtherDC, 0, 0, (rOtherWin.Right - rOtherWin.Left), (rOtherWin.Bottom - rOtherWin.Top), LBF)
所有值都有效且符合预期,但AlphaBlend仍然返回0。
谢谢。
答案 0 :(得分:0)
我发现了AlphaBlend失败的原因。 我尝试从一个只有一点点屏幕的DC的AlphaBlend。 如果它完全在屏幕内,AlphaBlend效果很好。
我不确定为什么会这样。如果有人知道,请告诉我!
答案 1 :(得分:0)
根据AlphaBlend的文档:源矩形必须完全位于源表面内,否则会发生错误,函数返回FALSE。
http://msdn.microsoft.com/en-us/library/windows/desktop/dd183351(v=vs.85).aspx