Ausgeben von Grafiken an beliebigen Positionen

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.

Festlegen der Linienstärke

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

Erstellen von Grafiken beim Laden eines Formulars

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 Grafik­methoden in nicht sichtbaren Formularen nicht ausführt, werden Grafikmethoden im Form_Load-Ereignis ignoriert, es sei denn, AutoRedraw ist auf True gesetzt.

Arbeiten mit Farben

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.

Festlegen von Farben zur Laufzeit

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.

Verwenden der RGB-Funktion

Die RGB-Funktion kann verwendet werden, um eine beliebige Farbe anzugeben.

So legen Sie mit der RGB-Funktion eine Farbe fest

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

Verwenden von VisualBasic-Farbkonstanten

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ß

Verwenden des Picture-Objekts

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).

Verwenden von Datenfeldern für Picture-Objekte

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-Steuer­elementen 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.