Hallo,
ich benötige mal einen kurzen Schubs. Ich habe eine Canvas mit variabler Größe, auf der ich ein paar Rechtecke zeichne. Jene Rechtecke sind unterschiedlich groß, z.B. mal 100*100 Pixel und mal 20*40 Pixel (...und bis zu 10000); das Bild wird dabei immer so gezoomt, dass die Canvas vollständig ausgefüllt wird. Ich hab jetzt eine relativ komplizierte Funktion geschrieben, die die Maximalausdehnung berechnet und dann entsprechend alle Koordinaten verkleinert/vergrößert, damit die Rechtecke immer ins Bild passen. Die ist recht zeitaufwändig. Jetzt bin ich auf die Vector-Bibliothek gestoßen und die müsste das Ganze eigentlich sehr vereinfachen. Leider komme ich mit den Umwandlungen nicht ganz klar. Kann mir bitte jemand mal ein minimales Beispiel geben bei dem ein beliebiges Rechteck auf die Größe der Canvas skaliert wird? Daraus kann ich dann sicher den Rest selbst erarbeiten. Danke im Voraus.
2. Frage: So wie ich gesehen habe werden die Objekte erst angelegt und dann in einem Rutsch gezeichnet. Und irgendwie kann ich die Objekte auch erhalten, damit ich sie nachher erneut zeichnen kann, ohne dass ich alles neu anlegen muss. Von Zeit zu Zeit muss eins der Rechtecke statt schwarz in rot gezeichnet werden; dazu kann ich es einfach als letztes Objekt noch einmal anhängen (das Rechteck muss immer komplett zu sehen sein). Kann ich den Rest (also die normalen Rechtecke ohne das rote) vorher kopieren, damit ich es beim nächsten Mal wieder zur Hand habe?
Einstieg in VectorDrawing
Einstieg in VectorDrawing
Guten Morgen, das ist ein schöner Tnetennba!
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
Re: Einstieg in VectorDrawing
Hm, wenn ein beliebiges Rechteck immer auf die Größe des Canvas gezerrt wird, dann wird doch immer einfach das ganze Canvas gefüllt oder?
Was soll das berechnet werden?
In VectorDrawing kannst du ScaleCoordinates() nutzen und dabei einfach für X und Y folgende Berechnung nutzen: X = CanvasWidth/RechteckWidth, selbes für Y mit Height.
Zum zweiten Punkt: Was meinst du mit Objekte? Es gibt keine Objekte in VectorDrawing. Was du vielleicht meinst sind Pfade. Hier kannst du in der Tat mehrere Rechtecke gleichzeitig anlegen und mit einem Rutsch zeichnen, dann aber mit genau der selben Farbe, Linienstärke und Füllung usw.
Was soll das berechnet werden?
In VectorDrawing kannst du ScaleCoordinates() nutzen und dabei einfach für X und Y folgende Berechnung nutzen: X = CanvasWidth/RechteckWidth, selbes für Y mit Height.
Zum zweiten Punkt: Was meinst du mit Objekte? Es gibt keine Objekte in VectorDrawing. Was du vielleicht meinst sind Pfade. Hier kannst du in der Tat mehrere Rechtecke gleichzeitig anlegen und mit einem Rutsch zeichnen, dann aber mit genau der selben Farbe, Linienstärke und Füllung usw.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Einstieg in VectorDrawing
Ja, ich meinte Pfade. Und das rdbzeck soll nicht ferzerrt, nur skaliert werden.
Mit Canvaswidth/RechteckWidth arbeite ich schon im 2DDrawing-Modus, ich hatte das so verstanden, dass ich die Pfade anlegen und das Ergebnis dann beliebig skalieren kann.
Mit Canvaswidth/RechteckWidth arbeite ich schon im 2DDrawing-Modus, ich hatte das so verstanden, dass ich die Pfade anlegen und das Ergebnis dann beliebig skalieren kann.
Guten Morgen, das ist ein schöner Tnetennba!
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD