VB-Homepage Tipp 306

Zeichnen und Ausfüllen über API Funktionen

Sie müssen nicht in irgendwelche Zusatzcontrol Trickkisten greifen, um nur mal ein paar Grundformen zu zeichnen und diese farbig auszufüllen.

Hier reicht es voll und ganz VB-eigene Anweisungen zum zeichnen der Rahmen und eine API-Funktion zum farbigen ausfüllen zu nutzen.

Circle = zum zeichnen von Kreisen und Ovalen
Line = zum zeichnen von Linien und Rechtecken

Für ein Demoprojekt benötigen wir eine Form und einen CommandButton.

Wir wollen eine kleine Slotmaschine bauen, die die Formen Kreis,Dreieck und Rechteck zeichnet über API ausmalt und dies dreimal nebeneinander, so das
man die Anzeige bei Bedarf auch auswerten und mit Punkten belegen könnte.
Aber das überlasse ich Ihnen.

Bauen Sie Ihre Form etwas größer, ich füge den Beispielcode aus einer Form ein,
auf der noch analoge Demos enthalten sind, deshalb werden die Objekte relativ weit rechts oben dargestellt. Ich habe aber keine Lust, daß jetzt erst noch zu modifizieren.

Allgemein/Deklarationen
Private Declare Sub FloodFill Lib "GDI32" (ByVal hDC As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal Color As Long)

Allgemein/Slot
Function Slot()
Dim wert1 As Integer

'erste Figur ermitteln
Randomize
wert1 = Int((3 * Rnd) + 1)

If wert1 = 1 Then 'Kreis
  FillColor = QBColor(10)
  Circle (370, 70), 10
  FloodFill hDC, 370, 20, &H0&
ElseIf wert1 = 2 Then 'Viereck
  FillColor = QBColor(14)
  FloodFill hDC, 370, 20, &H0&
  Line (360, 60)-(380, 80), , B
ElseIf wert1 = 3 Then 'Dreieck
  Line (360, 60)-(380, 60)
  Line (360, 60)-(370, 80)
  Line (380, 60)-(370, 80)
  FillColor = QBColor(11)
  FloodFill hDC, 370, 70, &H0&
End If

'zweite Figur ermitteln
wert1 = Int((3 * Rnd) + 1)

If wert1 = 1 Then 'Kreis
  FillColor = QBColor(10)
  Circle (410, 70), 10
  FloodFill hDC, 410, 20, &H0&
ElseIf wert1 = 2 Then 'Viereck
  FillColor = QBColor(14)
  FloodFill hDC, 410, 20, &H0& ' Windows-API aufrufen.
  Line (400, 60)-(420, 80), , B
ElseIf wert1 = 3 Then 'Dreieck
  Line (400, 60)-(420, 60)
  Line (400, 60)-(410, 80)
  Line (420, 60)-(410, 80)
  FillColor = QBColor(11)
  FloodFill hDC, 410, 70, &H0& ' Windows-API aufrufen.
End If

'dritte Figur ermitteln
wert1 = Int((3 * Rnd) + 1)

If wert1 = 1 Then 'Kreis
  FillColor = QBColor(10)
  Circle (450, 70), 10
  FloodFill hDC, 450, 20, &H0& ' Windows-API aufrufen.
ElseIf wert1 = 2 Then 'Viereck
  FillColor = QBColor(14)
  FloodFill hDC, 450, 20, &H0& ' Windows-API aufrufen.
  Line (440, 60)-(460, 80), , B
ElseIf wert1 = 3 Then 'Dreieck
  Line (440, 60)-(460, 60)
  Line (440, 60)-(450, 80)
  Line (460, 60)-(450, 80)
  FillColor = QBColor(11)
  FloodFill hDC, 450, 70, &H0& ' Windows-API aufrufen.
End If

End Function

Dem CommandButton übertragen Sie nun die Aufgabe,
die Slotmaschine zu starten.

Command1_Click

Dim i As Integer

'ein bisschen Bewegung vortäuschen
For i = 0 To 100
  Call Slot
Next i

Form1.Cls
Call Slot

Starten Sie Ihr Projekt mit F5 und schauen sich Ihre Little Slotmachine mal an.


Tipp-Download

Quelle :

Zurück zur Übersichtsseite