Sie können Grafiken mit der PaintPicture-Methode an beliebigen Positionen in einem Formular, in einem Bildfeld und auf dem Printer-Objekt ausgeben. Die Syntax für die PaintPicture-Methode ist:
[Objekt.]PaintPicture Bild, ZielX, ZielY[, ZielBreite[, ZielHöhe[, QuelleX [, QuelleY[, QuelleBreite[, QuelleHöhe[, Op]]]]]]]
Das Ziel-Objekt ist das Formular, das Bildfeld oder das Printer-Objekt, in dem das durch Bild angegebene Bild dargestellt wird. Wenn Objekt nicht angegeben wird, wird das aktuelle Formular als Ziel angenommen. Das Argument Bild muß ein Picture-Objekt sein, wie z.B. aus der Picture-Eigenschaft eines Formulars oder eines Steuerelements.
Die Argumente ZielX und ZielY geben die horizontale und vertikale Position an, an der das Bild dargestellt wird, und zwar in dem Skalierungsmodus, der durch ScaleMode für das Objekt angegeben wird. Die Argumente ZielBreite und ZielHöhe sind optional und legen die Breite und Höhe fest, mit der das Bild im Ziel-Objekt ausgegeben wird.
Die Argumente QuelleX und QuelleY sind optional und definieren die x‑Koordinate und die y‑Koordinate der oberen linken Ecke eines Bildausschnitts innerhalb von Bild.
For i = 0 To 10
For j = 0 To 10
Form1.PaintPicture picF.Picture, j * picF.Width, i * picF.Height, picF.Width, -picF.Height
Next j, i
Das optionale Argument Op definiert eine Rasteroperation (wie AND oder XOR), die auf dem Bild durchgeführt wird, während es im Ziel-Objekt ausgegeben wird.
Sie können mit der PaintPicture-Methode zum Beispiel mehrere Kopien derselben Bitmap erstellen und sie in einem Formular neben- und untereinander darstellen. Diese Methode ist schneller als das Verschieben von Bildfeld-Steuerelementen in einem Formular. Der folgende Code ordnet 100 Kopien eines Bildfeld-Steuerelements untereinander an und verdreht jedes Bild horizontal, indem ein negativer Wert für ZielBreite angegeben wird.
Die DrawWidth-Eigenschaft legt die Stärke einer Linie für die Ausgabe mit den Grafikmethoden fest. Die BorderWidth-Eigenschaft legt die Konturbreite der Linien- und Figur-Steuerelemente fest.
Die folgende Prozedur gibt beispielsweise Linien in unterschiedlichen Linienstärken aus.
Private Sub Form_Click ()
DrawWidth = 1
Line (100, 1000)-(3000, 1000)
DrawWidth = 5
Line (100, 1500)-(3000, 1500)
DrawWidth = 8
Line (100, 2000)-(3000, 2000)
End Sub
Beim Erstellen von Grafiken, die beim Laden eines Formulars in diesem Formular angezeigt werden, sollten Sie die Grafikmethoden in das Form_Paint-Ereignis einfügen. Form_Paint-Grafiken werden bei jedem Paint-Ereignis automatisch neu gezeichnet. Wenn Sie Grafiken in das Form_Load-Ereignis platzieren, setzen Sie die AutoRedraw-Eigenschaft des Formulars auf True. In diesem Fall sollte Form_Load das Formular anzeigen und dann die Grafik zeichnen. Bedenken Sie, dass Formulare während des Form_Load-Ereignisses nicht sichtbar sind. Da Visual Basic Grafikmethoden in nicht sichtbaren Formularen nicht ausführt, werden Grafikmethoden im Form_Load-Ereignis ignoriert, es sei denn, AutoRedraw ist auf True gesetzt.
Visual Basic verwendet ein durchgängiges System für Farbeigenschaften und Grafikmethoden. Farben werden durch Ganzzahlen vom Typ Long dargestellt, die immer dieselbe Bedeutung haben, wenn eine Farbe angegeben wird.
Ihnen stehen drei Verfahren zur Verfügung, um einen Farbwert zur Laufzeit festzulegen:
ˇ Verwenden der RGB-Funktion.
ˇ Verwenden einer der integrierten Konstanten, die im Objektkatalog aufgeführt sind.
ˇ Direktes Eingeben eines Farbwertes.
Dieser Abschnitt beschreibt, wie Farben mit den Funktionen RGB auf einfache Weise festgelegt werden können.
Die RGB-Funktion kann verwendet werden, um eine beliebige Farbe anzugeben.
1 Weisen Sie jeder der drei Primärfarben (Rot, Grün und Blau) einen Wert zwischen 0 und 255 zu, wobei 0 für die niedrigste und 255 für die höchste Farbintensität steht.
2 Übergeben Sie diese drei Werte der RGB-Funktion in der Reihenfolge Rot-Grün-Blau.
3 Weisen Sie das Ergebnis der Farbeigenschaft oder dem Farbargument zu.
Jede sichtbare Farbe kann mit einer Kombination aus einer oder mehreren dieser drei Primärfarben erzeugt werden. Beispiel:
Form1.BackColor = RGB(0, 128, 0) ' Hintergrund auf Grün setzen.
Form2.BackColor = RGB(255, 255, 0) ' Hintergrund auf Gelb setzen.
PSet (100, 100), RGB(0, 0, 64) ' Punkt auf Dunkelblau setzen.
Form1.BackColor = vbYellow ' Hintergrund auf Gelb setzen
vbBlack | 0x0 | Schwarz | vbRed | 0xFF | Rot | |
vbGreen | 0xFF00 | Grün | vbYellow | 0xFFFF | Gelb | |
vbBlue | 0xFF0000 | Blau | vbMagenta | 0xFF00FF | Magenta | |
vbCyan | 0xFFFF00 | Zyan | vbWhite | 0xFFFFFF | Weiß |
Das Picture-Objekt ist dem Printer-Objekt in gewisser Hinsicht ähnlich: Sie können es zwar nicht sehen, es ist aber dennoch nützlich. Stellen Sie sich das Picture-Objekt als unsichtbares Bildfeld vor, das Sie als Bühne für Bilder verwenden können. Mit dem folgenden Code wird beispielsweise ein Picture-Objekt mit einer Bitmap geladen und die Bitmap zum Festlegen der Picture-Eigenschaft eines Bildfeld-Steuerelements verwendet:
Private Sub Command1_Click()
Dim objPic As Picture
Set objPic = LoadPicture("Schmetterling.bmp")
Set Picture1.Picture = objPic
End Sub
Das Picture-Objekt unterstützt Bitmaps, GIF-Bilder, JPEG-Bilder, Metafile-Dateien und Symbole (siehe Grafikformate).
Mit einem Datenfeld für Picture-Objekte können Sie eine Reihe von Grafiken im Speicher behalten, ohne ein Formular mit mehreren Bildfeldern oder Bild-Steuerelementen einzusetzen. Dies eignet sich zum Erstellen von Animationsfolgen oder anderen Anwendungen, bei denen ein schneller Bildwechsel erforderlich ist. Deklarieren Sie das Datenfeld auf Modulebene:
Dim objPics(1) As Picture
Fügen Sie dem Form_Load-Ereignis folgenden Code hinzu:
' Bitmaps in das Datenfeld für das Picture-Objekt laden.
Set objPics(0) = LoadPicture("Schmetterling1.bmp")
Set objPics(1) = LoadPicture("Schmetterling2.bmp")
Sie können sich dann im Timer-Ereignis durch die Bilder bewegen:
Static intCount As Integer
If intCount = 0 Then
intCount = 1
Else
intCount = 0
End If
' Bitmaps mit der PaintPicture-Methode im Formular anzeigen.
PaintPicture objPics(intCount), 0, 0
Wenn Sie zum Erhöhen der x- und y-Koordinaten eine Schleife hinzufügen, können Sie die Schmetterlings-Bitmaps über das Formular "fliegen" lassen.