Canvas - Die Zeichenfläche
In einigen Fällen kann es durchaus nützlich sein, sich Daten visuell aufbereitet ausgeben zu lassen. Bisher war dies nur über mehr oder minder große Umwege (Datenexport -> einlesen in ein entsprechendes Programm, z.B. MS Excel -> erstellen eines Diagramms) möglich. Mit der Canvas enthält die Toolbox 3.0 einige Funktionen, die es Ihnen erlauben, einfache Grafiken zur Laufzeit dynamisch zu erzeugen.
Abb. 1 / siehe Beispiel zu Canvas-Funktionen
Die Zeichenfläche stellt Ihnen folgende Funktionen zur Verfügung. Diese befinden sich in der TDBCANV.DLL
Name | Parameter | Rückgabewert | Funktion |
---|---|---|---|
CanvasShow | iW : INTEGER iH : INTEGER cCaption : STRING |
keiner | Öffnet die
Zeichenfläche mit der in iW und iH übergebenen Breite
(=Width) und Höhe (=Height) in Pixeln. Die Titelleiste des Zeichenfensters enthält den in cCaption übergebenen Text als Überschrift. Zur Bestimmung der richtigen Fenstergröße dienen die Funktionen ScreenHeight und -Width (siehe weiter unten). CanvasShow(800,600, "Meine erste Canvas mit VDP") |
CanvasHide | keiner | keiner | Schließt das Zeichenfenster und gibt die belegten Ressourcen wieder frei (nicht Freeze!) |
CanvasLine | x1 : INTEGER y1 : INTEGER x2 : INTEGER y2 : INTEGER |
keiner | Zeichnet eine
Linie zwischen den beiden Koordinatenpaaren (x1,y1) und
(x2,y2). Die Koordinaten werden in Pixeln gerechnet. CanvasLine(20,20, 150,100); |
CanvasLineSize | x : INTEGER | keiner | Setzt die Linienstärke auf x Pixel. |
CanvasLineColor | r : INTEGER g : INTEGER b : INTEGER |
keiner | Legt die
Farbe fest, die beim Zeichnen der nächsten Linie
verwendet werden soll. r, g und b müssen jeweils
zwischen 0 und 255 liegen. Die Farbe definiert sich aus
dem entsprechenden RGB-Wert (z.B.: "0,0,0" ; "255,0,0") CanvasLineColor(0,0,0) |
CanvasBGColor | r : INTEGER g : INTEGER b : INTEGER |
keiner | Legt die
Hintergrundfarbe fest. Die Parameter stellen den
Farb-RGB-Wert dar. (siehe CanvasLineColor) Vorsicht: Bei Aufruf von CanvasBGColor wird die gesamte Zeichenfläche überschrieben CanvasBGColor(255,255,255) |
CanvasFont | cName :
STRING iSize : INTEGER |
keiner | Wählt die in
cName und iSize übergebene Schriftart und -größe aus.
Alle darauffolgenden Textausgaben mit CanvasText werden
entsprechend dargestellt. CanvasFont("Arial", 12) |
CanvasText | x : INTEGER y : INTEGER cText : INTEGER |
keiner | Gibt an der
mit (x,y) in Pixeln übergebenen Stelle den in cText
gespeicherten Text aus. CanvasText(120,10, "VDP kann malen!") |
CanvasTextColor | r : INTEGER g : INTEGER b : INTEGER |
keiner | Legt die
Textfarbe im RGB-Format fest. CanvasTextColor(64,128,128); |
CanvasDot | x : INTEGER y : INTEGER |
keiner | CanvasDot
setzt an der mit (x,y) bestimmten Stelle einen
"Marker" (= 4x4 Pixel), mit dem z.B.
Spitzenwerte hervorgehoben werden können.Die Farbe ist
immer Schwarz (RGB = 0,0,0). CanvasDot(50,50) |
CanvasFreeze | keiner | keiner | Macht eine Kopie der derzeit auf der Zeichenfläche sichtbaren Grafik. Beim Schließen der Zeichenfläche bleibt diese Kopie erhalten und kann bei erneutem Öffnen einer Canvas mit CanvasRestore wiederhergestellt werden. |
CanvasRestore | keiner | keiner | Eine mit CanvasFreeze erstellte Kopie der Zeichnung kann mit CanvasRestore wiederhergestellt werden. Auch nach dem Schließen und späterem Wiederöffnen der Zeichenfläche ist diese Grafik noch verfügbar. Achtung: Nach Aufruf von CanvasRestore wird die, sich im Speicher befindende, Kopie gelöscht! |
CanvasUnFreeze | keiner | keiner | Löscht die mit CanvasFreeze erstellte Zeichnungskopie. Sollten Sie die Kopie nicht mit CanvasRestore anzeigen lassen, müssen Sie den belegten Speicher spätestens am Ende Ihrer Procedure unbedingt mit CanvasUnFreeze freigeben. |
CanvasUpdate | keiner | keiner | Macht alle
Änderungen auf der Zeichenfläche sichtbar. Alle
Zeichenfunktionen der Canvas zeichnen auf eine interne
Zeichenfläche. Um diese Änderungen sichtbar zu machen
müssen Sie CanvasUpdate verwenden. CanvasText(10,10,"Hallo VDP-Welt!") CanvasLine(10,22,10 + CanvasStrLen("Hallo VDP-Welt!","Arial", 12), 22) CanvasUpdate |
ScreenHeight | keiner | INTEGER | Gibt die
Bildschirmhöhe der aktuellen Grafikauflösung in Pixeln
zurück y := ScreenHeight |
ScreenWidth | keiner | INTEGER | Gibt die
Bildschirmbreite der aktuellen Grafikauflösung in Pixeln
zurück x := ScreenWidth |
CanvasStrLen | cText :
STRING; cFont : STRING; iFontSize : INTEGER; |
INTEGER | Gibt die
Länge des in cText übergebenen Strings, die sich bei
der in cFont genannten Schriftart mit der Größe
iFontSize ergibt zurück. VAR nLänge = CanvasStrLen("tdb Software Service GmbH", "Times New Roman", 12) |
CanvasSaveAs | cFilename : STRING; | INTEGER | Speichert den
Inhalt der Zeichenfläche als Windows-Bitmap (.BMP) in
der in cFilename übergebenen Datei ab. CanvasSaveAs("C:\BILDER\STATISTIK.BMP") |
CanvasSaveRectAs |
x1 : INTEGER; y1 : INTEGER; x2 : INTEGER; y2 : INTEGER; cFilename : STRING; |
INTEGER | Speichert einen bestimmten,
rechteckigen Bereich der Zeichenfläche in die Datei
cFilename. Die Koordinaten (x1, y1) und (x2, y2) spannen
das zu speicherende Rechteck auf. Treten beim Speichern
Fehler auf, so gibt CanvasSaveRectAs() -1 zurück, sonst
ist das Ergebnis 0. CanvasSaveRectAs(10,10, 150,200, "C:\BILDER\TEILBILD1.BMP") |
CanvasOpenBMP | cFilename :
String; iLeft : INTEGER; iTop : INTEGER; iRight : INTEGER; iBottom : INTEGER; |
INTEGER | Öffnet eine
Bitmap-Datei, die Sie mit cFilename bestimmen und stellt
diese in dem durch die vier Integer-Werte definierten
Rechteck dar. iTop und iLeft enthalten die Koordinaten
der linken, oberen Ecke, während Sie mit iBottom und
iRight die rechte, untere Ecke angeben. Sind iBottom und
iRight gleich 0, so wird die Bitmap in ihrer
ursprünglichen Größe dargestellt, die linke, obere
Ecke der Bitmap entspricht dann iTop und iLeft. CanvasOpenBMP("C:\Bilder\Firmenlogo.bmp" ,150,10,0,0 ) |
CanvasBox | x1 : INTEGER; y1 : INTEGER; x2 : INTEGER; y2 : INTEGER; Filled : INTEGER; |
Keiner | Mit CanvasBox
können Sie ein beliebiges Rechteck zeichnen. (x1,y1)
bestimmen die linke, obere Ecke, (x2,y2) die rechte,
untere. Filled teilt der Canvas mit, ob das Rechteck
ausgefüllt oder als Umriss gezeichnet werden soll.
Filled gleich 0 gibt an, dass das Rechteck nur durch
Linien umrissen wird. Hat Filled den Wert 1, wird das
gesamte Rechteck in der aktuelle Linienfarbe gemalt. CanvasLineColor(20,100,20) CanvasBox(10,10,110,30,1) CanvasUpdate |
CanvasEllipse | x1 : INTEGER; y1 : INTEGER; x2 : INTEGER; y2 : INTEGER; |
Keiner | Mit
CanvasEllipse können Sie ein beliebige Ellipse zeichnen.
(x1,y1) und (x2,y2) bestimmen die beiden Brennpunkte.
Sind (x1,y1) und (x2,y2) identisch, dann zeichnet
CanvasEllipse einen Kreis. CanvasEllipse zeichnet nur den
Umriss einer Ellipse. CanvasLineColor(20,100,20) CanvasEllipse(10,10,110,30) CanvasUpdate |