Zum Hauptinhalt springen

Canvas

Canvas

Anzeige und Interaktion vektorbasierter Grafikobjekte

Details

Das Canvas-Objekt dient zur Anzeige und Interaktion vektorbasierter Grafikobjekte.

  • Grafikobjekte Das Canvas-Objekt ist ein Container, der Grafikobjekte verwaltet. Ein Grafikobjekt kann mittels WinCreate(_WinTypeCanvasGraphic, ...) erstellt und gleichzeitig oder nachträglich mit WinAdd () zum Canvas-Objekt hinzugefügt und per WinRemove () bzw. WinDestroy () wieder entfernt werden. Der von WinCreate () zurückgegebene Deskriptor kann verwendet werden, um die Eigenschaften des Grafikobjektes zu setzen oder zu lesen. Die Form der erzeugten Grafikobjekte kann über die Eigenschaft FormType des jeweiligen Objektes gesetzt werden. Die Ausgabe der Grafikobjekte findet innerhalb der Ausgabefläche des Canvas-Objektes statt. Liegen Grafikobjekte außerhalb des sichtbaren Bereiches, zeigt das Canvas-Objekt Scrollbalken an, um die Grafikobjekte in den sichtbaren Bereich verschieben zu können. Die Zeichenfläche wird in geräteunabhängigen, logischen Einheiten bereitgestellt. Für die Umrechnung von Einheiten (z. B. Millimeter, Zentimeter) in logische Einheiten kann der Befehl PrtUnitLog () verwendet werden.
  • Fensterobjekte Neben Grafikobjekten können einem Canvas-Objekt auch dynamisch erstellte Fensterobjekte (siehe Canvas-Fensterobjekte ) hinzugefügt werden. Die Erstellung und Entfernung läuft hierbei analog zu den Grafikobjekten. Position und Größe von Fensterobjekten werden jedoch in Pixel erwartet. Aus diesem Grund ist u. U. eine Umrechnung von Pixel in logische Koordinaten notwendig. Hierfür stehen die Canvas-Befehle WinCanvasLogUnit () und WinCanvasPixel () zur Verfügung. Fenster-Objekte werden nicht durch Scrollen oder Zoomen im Canvas-Objekt beeinflusst, sondern behalten ihre Position und Größe.

Standardmäßig zeigt das Canvas-Objekt ein Raster an. Dieses kann über die Eigenschaften GridWidth und GridHeight ausgeblendet (einer der Werte = 0) oder in der Größe in logischen Einheiten definiert werden. Zudem werden am oberen und linken Rand standardmäßig Liniale angezeigt. Diese können mit der Eigenschaft Ruler ausgeblendet werden.

Beispiel:

// Canvas-Objekt erstellen und Objektgröße setzen
tCanvas # WinCreate(_WinTypeCanvas, 'cnvCanvas', '', tFrame);
if (tCanvas > 0)
{
tCanvas->wpArea # RectMake(0, 0, 500, 500);

// Objekte zum Canvas-Objekt hinzufügen
tGraphic # WinCreate(_WinTypeCanvasGraphic, 'graGraphic', 'Hello World', tCanvas);
if (tGraphic > 0)
{
tGraphic->wpArea # RectMake(PrtUnitLog(5.0, _PrtUnitCentimetres), PrtUnitLog(5.0, _PrtUnitCentimetres),
PrtUnitLog(20.0, _PrtUnitCentimetres), PrtUnitLog(20.0, _PrtUnitCentimetres));
tGraphic->wpColFg # _WinColCaptionText;
tGraphic->wpColBkg # WinColorOpacitySet(_WinColLightGreen, 50);
tGraphic->wpFormType # _WinFormTypeRectangle;
}

...
}

Benutzerinteraktion

Das Canvas-Objekt unterstützt das Selektieren von CanvasGraphic -Objekten. Hierfür stehen mehrere Möglichkeiten zur Verfügung:

  • Auswahl mit der Maus Eine Auswahl kann aufgespannt werden, indem mit der linken Maustaste ( Linke Maustaste ) in einen freien Bereich des Canvas-Objektes geklickt und die Maustaste gehalten wird. Beim Bewegen der Maus wird ein rechteckiger Bereich aufgespannt. Wird die linke Maustaste losgelassen, werden alle CanvasGraphic -Objekte selektiert, die sich vollständig innerhalb des rechteckigen Bereiches befinden. Ein nicht ausgewähltes CanvasGraphic -Objekt kann der Auswahl hinzugefügt werden, indem es mit Strg + Linke Maustaste angeklickt wird. Auf diese Weise kann das Objekt auch wieder aus der Auswahl entfernt werden. Ein Mausklick ohne Zusatztaste auf ein nicht ausgewähltes CanvasGraphic -Objekt entfernt die bereits vorhandene Auswahl und wählt das geklickte Objekt aus. Ausgewählte CanvasGraphic -Objekte werden mit einem Selektionsrahmen mit acht Ankerpunkten dargestellt. Wird die Maus über einen Ankerpunkt geführt, verändert sich der Mauszeiger entsprechend. Klickt der Benutzer mit Linke Maustaste auf einen Ankerpunkt und hält diese gedrückt, führen Bewegungen mit der Maus zu einer Größenänderung aller ausgewählten CanvasGraphic -Objekte. Die ausgewählten Objekte können auch verschoben werden. Dies geschieht, indem der Mauszeiger in ein bereits ausgewähltes Objekt geführt wird. Jetzt verändert sich der Mauszeiger und zeigt ein Verschieben-Symbol an. Wird nun die Linke Maustaste gedrückt und gehalten, werden alle ausgewählten Objekte verschoben. Alle Operationen (Auswahl aufspannen, Größe ändern, Verschieben) können bei gehaltener linker Maustaste abgebrochen werden, indem die Esc -Taste betätigt wird.
info

Eine Interaktion im Canvas-Objekt mit der Maus ist nur möglich, wenn die Eigenschaft ReadOnly des Objektes auf false gesetzt ist (default). Die Auswahl von Objekten mit der Maus wirkt sich auf die Eigenschaft SelData aus (siehe Auswahl per Programm-Code).

  • Auswahl per Programm-Code Die Mehrfachauwahl kann prozedural über die Eigenschaft SelData verändert werden. Die Eigenschaft enthält alle gegenwärtig im Canvas-Objekt ausgewählten CanvasGraphic -Objekte. Werden Objekte vom Anwender über Maus selektiert oder deselektiert, wird automatisch die Eigenschaft SelData aktualisiert. Zum prozedurealen Hinzufügen und Entfernen von CanvasGraphic -Objekten wird der Deskriptor des CanvasGraphic -Objektes bei WinMsdInsert () bzw. WinMsdDelete () angegeben. Zur Aktualisierung der Mehrfachauswahl muss anschließend WinUpdate ( _WinUpdState ) durchgeführt werden.