Visual Basic arbeitet standardmäßig mit Twips als Grafikeinheit, wohingegen das Windows-API mit Pixeln arbeitet. Daher ist es manchmal notwendig, Koordinaten usw. von Twips in Pixel zu konvertieren. Dazu stellt Visual Basic die Funktionen ScaleX und ScaleY zur Verfügung. Statt Me im folgenden Beispiel könnte auch der Name eines PictureBox-Steuerelements oder eines Printer-Objekts angegeben werden, auf dem die Umrechnung stattfinden soll:
Ermitteln von Eigenschaften des Desktops
Folgende Prozeduren können verwendet werden, um die Farbtiefe, Größe und Pixel/Zoll eines Gerätekontexts zu ermitteln. Der Einfachheit halber werden hier nur die Daten des Desktopfensters ausgelesen:
Der Aufruf könnte dann folgendermaßen erfolgen, wobei keine Werte zurückgegeben, sondern Verweisparameter verwendet werden:
Um die tatsächliche Anzahl an darstellbaren Farben zu berechnen, könnte folgender Code benutzt werden:
Verwenden von AutoRedraw bei Grafikmethoden
Die GDI-Schnittstelle des Systems und Visual Basic stellen eine große Anzahl von Funktionen zur Verfügung, um Grafiken auf einen Gerätekontext zu kopieren bzw. Linien usw. zu zeichnen. Unter Visual Basic besitzen Formulare und PictureBox-Steuerelemente die AutoRedraw-Eigenschaft. Wird diese Eigenschaft auf True gesetzt, unterhält Windows für den Gerätekontext eine Bitmap im Speicher, sodaß das Fenster schneller aktualisiert werden kann, ohne zu flackern.
Das Setzen von AutoRedraw vor Grafikoperationen ist notwendig, damit das Resultat dauerhaft angezeigt wird und nicht bei jedem Invalidieren des Fensterinhalts neu gezeichnet werden muß. Daher sollte nach folgendem Schema vorgegangen werden, wobei dies sowohl für die entsprechenden Visual-Basic-Funktionen als auch für die API-Funktionen gilt (zu beachten ist das Refresh vor deaktivieren von AutoRedraw, das notwendig ist, damit das neue Bild, das auf den Gerätekontext der AutoRedraw-Bitmap abgelegt ist, auch angezeigt wird):
Umwandeln von JPEG/GIF in Bitmap
Manchmal ist es notwendig, JPEGs oder GIFs in Windows-Bitmaps zu konvertieren und in eine Bitmap-Datei abzuspeichern. Dazu könnte folgende Routine verwendet werden (es werden keine Steuerelemente benötigt):
Um eine Windows-Metafile-Datei in eine Bitmap zu konvertieren, muß diese zuerst in eine PictureBox geladen werden und anschließend deren Inhalt mit SavePicture als Bitmap gespeichert werden.
Schnelles Laden und Ausgeben von Bildern
Um eine Grafik direkt aus einer Datei zu laden und in einer beliebigen Größe in einer PictureBox auszugeben, kann folgender Code verwendet werden:
Aufspalten einer Farbe in ihre Grundfarbanteile
Die Funktion SplitToRGB kann verwendet werden, um eine z. B. als Hexadezimalcode angegebene Farbe in ihre RGB-Komponenten aufzuspalten. Die hier vorgestellte Lösung ist bei weitem nicht optimiert, durch Einsatz von RtlMoveMemory kann die Leistung noch gesteigert werden. Diese Funktion funktioniert nicht mit den Systemfarbwerten:
Wie bereits vorher angegeben kann die Effizienz auch durch den Einsatz einer API-Funktion noch etwas gesteigert werden:
Für den Aufruf muß in RGB ein Array mit den Indizes von 0 bis 3 übergeben werden. Das entspricht vier Elementen, obwohl nur drei erforderlich wären; allerdings ist die Funktion dadurch schneller. Außerdem ist zu beachten, daß die Deklaration von CopyMemory extra für dieses Beispiel angepaßt wurde.
Drucken eines Bildes eingepaßt in die Seite
Nachstehende Funktion wird eingesetzt, um eine Grafik aus einem Picture-Objekt auf den Drucker so auszugeben, daß die Seite optimal ausgenützt wird. Dabei wird das Papierformat passend gewählt und die Grafik skaliert:
Spiegeln von Bildern
Oft hört man die Frage, wie Grafiken mit Visual-Basic-eigenen Mitteln gespiegelt werden können. Die folgenden Beispiele zeigen, wie es funktioniert. Dabei wird angenommen, daß picSource die Quellbitmap und picDestination das Ziel darstellen:
Mit PaintPicture ist es auch möglich, Grafiken zu vergrößern bzw. zu verkleinern. Folgender Codeausschnitt vergrößert eine Grafik auf das Dreifache der Originalgröße:
Wiederverwenden des Desktophintergrundbildes
Die API-Funktion PaintDesktop füllt den entsprechenden Bereich des angegebenen Gerätekontexts mit dem Hintergrundbild oder dem Hintergrundmuster. Die Funktion wird hauptsächlich für Shell-Desktops zur Verfügung gestellt:
Ermitteln der Maße eines Bildes
Der nachstehende Code ermittelt mit reinen Visual-Basic-Mitteln die Maße einer Grafikdatei:
Drucken einfacher Namensetiketten
Es sollen Namensetiketten ausgedruckt werden, wobei der Name und die dazugehörige Adresse in einer Zeichenfolge abgelegt sind. Diese Zeichenfolge ist durch Zeilenumbrüche formatiert. Folgender Code druckt eine Seite angegebener Größe mit einer Beispieladresse in ein PictureBox-Steuerelement. Im Parameter Out kann man auch ein Printer-Objekt angeben, damit die Ausgabe auf den Drucker erfolgt:
Es wird dabei automatisch berechnet, wie viele Elemente auf dem zu bedruckenden Objekt Platz finden und der Ausgaberaster wird anschließend dementsprechend zentriert. Das Beispiel wurde für einen Programmieranfänger geschrieben und zeigt die Verwendung von Schleifen sowie das Drucken von einfachem Text.