Inkscape: Warum unterscheiden sich Koordinaten in GUI und XML?

In der Zeichnung unten habe ich zB ein Rechteck.

Screenshot mit Koordinaten in GUI und XML

In der GUI sagt Inkscape, dass sich das Rechteck an der Y-Position 0 befindet, aber im XML für dieses Element steht 873. Warum ist das so und wie bekomme ich die "echte" Nummer?

Hintergrund: Beim Exportieren des Bildes (Skript) möchte ich an allen vier Seiten einen 10-Pixel-Rand hinzufügen. Ich dachte, ich könnte einfach nach den größten / kleinsten Koordinaten in XML suchen und die 10 Pixel für den Rand hinzufügen, aber am Ende exportiere ich einen ganz weißen Hintergrund anstelle des Bildes. Die Arbeit mit dem XML ist hier selbstverständlich, weil ich andere (Meta-)Informationen daraus bekomme.

Den Bildursprung kann ich mit inkscape -Xund inkscape -Yund die Bildabmessungen mit inkscape -Hund abfragen inkscape -W. Das bringt mir auch die Zahlen aus der GUI. Der Export mit diesen Werten funktioniert. Dies erfordert jedoch viermal pro Bild einen neuen Inkscape-Prozess und verlangsamt daher den gesamten Export. (Viele Bilder auf alter Hardware.)

Dies ist Inkscape 0.91 unter Linux, falls das wichtig ist.

Antworten (1)

Normalerweise werden SVG-Einheiten in Pixel ausgedrückt , und wenn die Inkscape-Koordinaten auf Pixel eingestellt sind, sollten sie übereinstimmen (siehe auch hier und hier ).

In Ihrem Beispiel ist der Unterschied in Breite (236,185 vs. 234,869) und Höhe (180,000 vs. 178,6805) auf die Randbreite des Rechtecks ​​zurückzuführen, die in Inkscape W und H und nicht in SVG-Breite und -Höhe enthalten ist.

Zum Beispiel mit einem Randstrich von 1 px:

Rechteck mit Rand

Dasselbe Rechteck ohne Rand:

Rechteck ohne Rand

Beachten Sie, dass der Rand auf dem Pfad zentriert ist. In meinem Beispiel haben wir:

Inkscape W = SVG-Breite (199 px) + halber Strich links (0,5 px) + halber Strich rechts (0,5 px) = 200 px

Der Strich ist auf dem Pfad zentriert

Beachten Sie, dass die Y-Koordinate in Inkscape die Null am unteren Rand des Dokuments hat, während sich in SVG die Null oben im Dokument befindet.

Y = 0 in Inkscape bedeutet ein Objekt am unteren Rand des Dokuments:

Y=0 in Inkscape

Y = 0 in SVG bedeutet ein Objekt am Anfang des Dokuments:

Y=o in SVG

Dies bedeutet, dass Ihre "echte" Nummer ungefähr so ​​​​aussieht:

Y-Koordinate in SVG (px) = Seitenhöhe (px) - Y-Koordinate in Inkscape (px) - Objekt- und Rahmenhöhe (px)

(Beachten Sie, dass die Umkehrung der Y-Achse gemäß dieser Ausgabe irgendwann in der Zukunft behoben wird .)