0

我正在使用 AlphaBlend。没有什么特别的。

我的代码在 Vista、Windows 7 和 Windows 8 上运行良好,但在 Windows XP 上运行良好。

通常 AlphaBlend 返回 1,但在 XP 上返回 0。我在 2 台 XP 计算机上对其进行了测试。

我完全感到困惑。

GetLastError 返回“成功完成”。

我很确定 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。

谢谢你。

4

2 回答 2

0

我发现了 AlphaBlend 失败的原因。我尝试从离屏幕只有一点点的 DC 使用 AlphaBlend。如果它完全在屏幕内,AlphaBlend 效果很好。

但是我不确定为什么会这样。如果有人知道,请告诉我!

于 2013-01-25T17:51:49.247 回答
0

根据 AlphaBlend 的文档:源矩形必须完全位于源曲面内,否则会发生错误并且函数返回 FALSE。

http://msdn.microsoft.com/en-us/library/windows/desktop/dd183351(v=vs.85).aspx

于 2013-01-25T18:22:52.087 回答