Rubrik: Grafik & Zeichnen | 22.03.05 |
![]() Diese Funktion kopiert ein Bitmap von einem Device auf ein anderes Device, wobei ein Alphawert angegeben werden kann, der das Bitmap durchscheinen lässt. | ||
Betriebssystem: Win98, WinNT 4.0, Win2000, WinME | Views: 16.157 |
Deklaration:
Declare Function AlphaBlend Lib "msimg32.dll" ( _ ByVal hdcDest As Long, _ ByVal xDest As Long, _ ByVal yDest As Long, _ ByVal WidthDest As Long, _ ByVal HeightDest As Long, _ ByVal hdcSrc As Long, _ ByVal xSrc As Long, _ ByVal ySrc As Long, _ ByVal WidthSrc As Long, _ ByVal HeightSrc As Long, _ ByVal Blendfunc As Long) As Long
Beschreibung:
Diese Funktion kopiert ein Bitmap von einem Device auf ein anderes Device, wobei ein Alphawert angegeben werden kann, der das Bitmap durchscheinen lässt.
Parameter:
hdcDest | Erwartet den Devicekontext des Ziels, auf dem das Quellbitmap kopiert wird. |
xDest | Erwartet die horizontale Koordinate, ander das Quellbitmap auf dem Ziel positioniert werden soll. |
yDest | Erwartet die vertikale Koordinate, ander das Quellbitmap auf dem Ziel positioniert werden soll. |
WidthDest | Erwartet die neue Breite des Quellbitmaps. |
HeightDest | Erwartet die neue Höhedes Quellbitmaps. |
hdcSrc | Erwartet den Devicekontext des Gerätes, das das Quellbitmap enthält. |
xSrc | Erwartet die horizontale Koordinate, von der aus das Quellbitmap kopiert werden soll. |
ySrc | Erwartet die vertikale Koordinate, von der aus das Quellbitmap kopiert werden soll. |
WidthSrc | Erwartet die Breite des Quellbitmaps, die kopiert werden soll. |
HeightSrc | Erwartet die Höhe des Quellbitmaps, die kopiert werden soll. |
Blendfunc | Erwartet eine ![]() |
Rückgabewert:
Ist die Funktion erfolgreich, so ist die Rückgabe ein Wert "ungleich 0", andernfalls wird derWert "0" zurückgegeben. Unter Windows NT, 2000 und XP können Sie die GetLastError-Funktion für erweiterte Fehlerinformationen aufrufen.
Beispiel:
Private Declare Function AlphaBlend Lib "msimg32.dll" ( _ ByVal hdcDest As Long, _ ByVal xDest As Long, _ ByVal yDest As Long, _ ByVal WidthDest As Long, _ ByVal HeightDest As Long, _ ByVal hdcSrc As Long, _ ByVal xSrc As Long, _ ByVal ySrc As Long, _ ByVal WidthSrc As Long, _ ByVal HeightSrc As Long, _ ByVal Blendfunc As Long) As Long Private Declare Sub MoveMemory Lib "kernel32.dll" _ Alias "RtlMoveMemory" ( _ Destination As Any, _ Source As Any, _ ByVal Length As Long) Private Type BLENDFUNCTION BlendOp As Byte BlendFlags As Byte SourceConstantAlpha As Byte AlphaFormat As Byte End Type ' BlendFunction BlendOp-Konstante Private Const AC_SRC_OVER = &H0 ' die Quelle wird über dem Ziel gezeichnet ' 'BlendFunction AlphaFormat-Konstante Private Const AC_SRC_ALPHA = &H1 ' das Quellbitmap wurde schon mit dem Alphawert multipliziert
' Bildfelder einstellen Private Sub Form_Load() Picture1.ScaleMode = vbPixels Picture1.AutoRedraw = True Picture2.ScaleMode = vbPixels Picture2.AutoRedraw = True End Sub
' Alphablending starten Private Sub Command1_Click() Dim Retval As Long, LBF As Long, BF As BLENDFUNCTION ' Struktur mit Blendingwerten füllen With BF .BlendOp = AC_SRC_OVER .SourceConstantAlpha = 128 End With ' Struktur in eine Long-Variable kopieren Call MoveMemory(LBF, BF, Len(BF)) ' Alphablending-Operation durchführen With Picture1 Retval = AlphaBlend(Picture2.hDC, 0, 0, Picture2.ScaleWidth, _ Picture2.ScaleHeight, .hDC, 0, 0, .ScaleWidth, .ScaleHeight, LBF) Picture2.Refresh If Retval = 0 Then MsgBox "Das Alphablending ist fehlgeschlagen" End If End With End Sub