Visual Basic World - Programmierung und BeispieleVisual Basic World - Tipps und TutorialsVisual Basic World - Source-Code und Forum

<leer>

Tipp 041: Grafiken schnell und flimmerfrei zeichnen mit BitBlt

Autor: Alexander Kopatz  VB-Version: Visual Basic 6.0   Download: Beispielprojekt Tipp-041

Beschreibung

Wenn Sie eine oder mehrerer Grafiken schnell und flimmerfrei zeichnen wollen, so stoßen Sie mit Visual Basic Bordmitteln schnell an die Grenzen der Machbarkeit. Dieses Beispiel schafft Abhilfe, denn mit der API-Funktion BitBlt können Sie schnelle flimmerfreie und sogar transparente Animationen realisieren.

Quellcode

frmBitBlt
Form                     frmBitBlt
Label                    lblCaption
PictureBox               picMask
' VISUAL BASIC WORLD
' ===========================================
' Das große Portal zum Thema Visual Basic.
'
' Wenn Ihnen dieser Source Code gefallen hat,
' dann empfehlen Sie Visual Basic World bitte
' weiter und/oder setzen Sie einen Link auf:
'
' http://www.visualbasicworld.de/
'
' Vernetzen Sie sich mit uns:
'
' http://twitter.com/visualbasicwrld

Option Explicit Private Declare Function BitBlt Lib "gdi32" _ (ByVal hDestDC As Long, ByVal X As Long, _ ByVal Y As Long, ByVal nWidth As Long, _ ByVal nHeight As Long, ByVal hSrcDC As Long, _ ByVal xSrc As Long, ByVal ySrc As Long, _ ByVal dwRop As Long) As Long Private Const SRCAND = &H8800C6 'Ziel = Quelle AND Ziel Private Const SRCINVERT = &H660046 'Ziel = Quelle XOR Ziel Private Const SRCPAINT = &HEE0086 'Ziel = Quelle OR Ziel Private Const SRCERASE = &H440328 'Ziel = Quelle AND (NOT Ziel) Private Const SRCCOPY = &HCC0020 'Ziel = Quelle Private RetVal As Variant Private XPixel As Long Private YPixel As Long
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyLeft XPixel = XPixel - 10 Case vbKeyRight XPixel = XPixel + 10 Case vbKeyUp YPixel = YPixel - 10 Case vbKeyDown YPixel = YPixel + 10 End Select Me.Cls RetVal = BitBlt(Me.hDC, XPixel, YPixel, picMask.Width, _ picMask.Height, picMask.hDC, 0, 0, SRCAND) 'Zuerst wird die Maske auf die Form gezeichnet. RetVal = BitBlt(Me.hDC, XPixel, YPixel, picMask.Width, _ picMask.Height, picSprite.hDC, 0, 0, SRCINVERT) 'Danach folgt die eigentlich Grafik. So ist es 'möglich bestimmte Bereiche transparent anzuzeigen, 'die welche in der Masken-Grafik definiert werden. DoEvents End Sub
Private Sub Form_Load() XPixel = Me.Width / 34 YPixel = Me.Height / 34 RetVal = BitBlt(Me.hDC, XPixel, YPixel, picMask.Width, _ picMask.Height, picMask.hDC, 0, 0, SRCAND) RetVal = BitBlt(Me.hDC, XPixel, YPixel, picMask.Width, _ picMask.Height, picSprite.hDC, 0, 0, SRCINVERT) End Sub

ANZEIGE <leer>
<leer> Aktuelle Seite Back To Top
Druckansicht | Feedback | Favoriten
Copyright © Visual Basic World, 2000-2014 | Kontakt | Impressum

Visual Basic World @ Twitter

Folgen Sie Visual Basic World!

Visual Basic World @ Twitter
Wenn Ihnen Visual Basic World gefällt, dann folgen Sie uns doch bei Twitter (@visualbasicwrld).
Vielen Dank!



Fragen & Forum

Wenn Sie offene Fragen zur Programmierung mit Visual Basic haben und in der Tipps & Tricks Sektion oder bei den Tutorials nicht fündig wurden, dann werfen Sie doch einen Blick ins Visual Basic World Forum.


Visual Basic World Forum

Im Forum erhalten Sie schnell Hilfe und finden eine Vielzahl an bereits beantworteten Fragen und Problemen.

Viel Vergnügen bei der Benutzung!


Unterstützen Sie VB-World!

Wenn Ihnen Visual Basic World gefällt, dann unterstützen Sie uns!



Das geht am einfachsten, indem Sie einen Link auf visualbasicworld.de setzen oder senden Sie doch folgende QR-Grafik an Ihre Freunde:

Visual Basic World

Außerdem würden wir uns sehr freuen, wenn Sie uns bei Twitter (@visualbasicwrld) folgen.
Vielen Dank!