AlphaBlend

23/04/2010 - 12:02 von Heinz-Mario Frühbeis | Report spam
Hallo!

Ich hàtte da mal eine Frage bezgl. AlphaBlend.

Codeausschnitt :

mRef.hDC -> enthàlt ein Hintergrundbild
mRef.IconBackgroundDC(S) -> enthàlt auch ein Bild

Dim BF As BLENDFUNCTION
Dim LBF As Long
With BF
.BlendOp = AC_SRC_OVER
.SourceConstantAlpha = 20
End With
Call MoveMemory(LBF, BF, Len(BF))

rDc = CreateCompatibleDC(mRef.hDC)
rBmp = CreateCompatibleBitmap(mRef.hDC, icP.Width, icP.Height)
sBmp = SelectObject(rDc, rBmp)
Result = SetBkMode(rDc, RGN_COPY)
Result = BitBlt(rDc, 0, 0, icP.Width, icP.Height _
, mRef.hDC, mLeft, mTop, vbSrcCopy)
Result = AlphaBlend(rDc, 0, 0, icP.Width, icP.Height _
, mRef.IconBackgroundDC(S), 0, 0, icP.Width, icP.Height, LBF)

Trotzdem wird bei "SourceConstantAlpha = 20" lediglich ein (nahezu)
schwarzer Hintergrund erzeugt.
Bei "SourceConstantAlpha = 200" wird das Bild nahezu original erzeugt.
Ich ging eigentlich davon aus das bei "rDC" der Hintergrund gemischt wird.
Was làuft denn da falslch?

viele Grüße
Heinz-Mario
 

Lesen sie die antworten

#1 Thorsten Albers
23/04/2010 - 12:43 | Warnen spam
Heinz-Mario Frühbeis schrieb im Beitrag
...
Call MoveMemory(LBF, BF, Len(BF))



Himmel, was für ein Konstrukt. Um dem zumindest etwas den Zündstoff zu
nehmen, solltest Du das wenigstens in
Call MoveMemory(LBF, BF, Len(LBF))
àndern...

Result = SetBkMode(rDc, RGN_COPY)



RGN_COPY ist kein gültiger Wert für SetBkMode().

Thorsten Albers

albers (a) uni-freiburg.de

Ähnliche fragen