0

アルファブレンドを使用しています。特別なことは何もありません。

私のコードは、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 のドキュメントによると: ソースの四角形はソース サーフェス内に完全に収まっている必要があります。そうでない場合、エラーが発生し、関数は FALSE を返します。

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

于 2013-01-25T18:22:52.087 に答える
0

AlphaBlend が失敗する理由がわかりました。画面からほんの少しだけ外れた DC から AlphaBlend を試みます。画面内に完全に収まっている場合、AlphaBlend はうまく機能します。

しかし、なぜそうなのかはわかりません。知ってる人いたら教えてください!

于 2013-01-25T17:51:49.247 に答える