Frage

Meine Aufgabe ist es, einen Algorithmus zu entwickeln, die verschiedene Arten von Kurven auf einem gegebenen Punkt-Sequenz in 2-dimensionalen Raum passt.

Damit Du mein Algorithmus zu testen, habe ich SVG gewählt, um das Ergebnis anzuzeigen. Ich habe mehrere Probleme mit sich.

Da es sein kann, sehr unterschiedliche Ein- und Ausgänge meines Algorithmus, es ist wichtig, dass ich die generierten SVG-Dateien mit der Fähigkeit zu vergrößern sehen könnte!

Aber ein Weg in SVG kann nur mit einer bestimmten Breite angezeigt werden. Wenn ich weiter vergrößert, dann wird die Breite des Weges immer breiter. Ich würde die Breite wie zum Beispiel 1 Pixel auf allen Zoomstufen zu sein. Gibt es eine Lösung für dieses?

Auch: kann Anzeigepunkte SVG? Ja, einfach, roh Punkte.? Ich habe festgestellt, dass es nicht.

Thank

War es hilfreich?

Lösung

Viele andere Vektorformate (wie Postscript und PDF) lassen Sie eine Schlaganfall-Breite von 0 für einen „Haaransatz“ Hub verwenden. Nicht so bei SVG. Allerdings I denken können Sie erreichen, was Sie wollen, wenn Sie einen Prozentsatz Schlaganfall-Breite verwenden. Siehe die w3c SVG Spezifikationen für Details , aber im Grunde sollte man sein der Lage, so etwas zu tun:

stroke-width:"1%"

Dies sollte Hub Ihre Kurve mit einer Linienbreite, die eine Konstante 1% des Begrenzungsrechteck ist, unabhängig von Zoomstufe.

Wie für die Punkte, hat SVG unterstützt diese Funktion nicht. Wenn ich habe dies in der Vergangenheit getan (mit Postscript) Ich habe immer verwendet, um ein Bogen mit einem kleinen redius einen kleinen Kreis zeichnen (die Sie füllen einen Punkt zu machen, wenn Sie möchten).


@Zoli: Nachdem Sie Ihren Kommentar, war ich über Sie sehen in Postscript vorschlagen, so dass Sie den Haaransatz Schlaganfall-Breite verwenden könnte, wenn ich auf die nicht-Scaling-Takt Vektor-Effekt in der SVG-Spezifikation :

vector-effect="non-scaling-stroke"

Fügen Sie einfach diese auf Ihre Kurve und es sollte auf Skalierung, entsprechend der Spezifikation invariant sein. Ihr Beispiel verwendet line, aber es sollte auch auf Ihren Kurven arbeiten.

Andere Tipps

Es gibt keinen -Element oder so etwas in SVG zur Zeit, aber fügte hinzu, dass hat sich in der SVG-WG diskutiert worden ist, so kann es in der Zukunft aufgenommen werden. Fühlen Sie sich frei, Ihre Bedürfnisse und Anforderungen für ein -Element für die Öffentlichkeit svg Mailing-Liste zu äußern. Www-svg@w3.org

Eine Abhilfe ist z Elemente zu verwenden und lassen Sie sie von der Länge Null sein, wenn Sie möchten rund linecaps haben kann, um es einen Punkt machen anzuzeigen. Es hängt alles davon ab, was Sie brauchen dies. Ein Kreis mit r = 0 könnte eine bessere Passform sein.

Die "Vektor-Effekt-Eigenschaft mit dem Wert‚nicht-Scaling-Hub‘ist, was Sie sagen, dass die Schlaganfall-Skala sollte nicht verwendet werden sollen. Es ist nicht so schwierig, eine JavaScript-Lösung zu implementieren, die Hübe sorgt für richtig skaliert, wenn ‚Vektor-Effekt‘ nicht nativ unterstützt. Opera 9.5+ unterstützt nativ.

Danke Naaff Hilfe. Ich glaube, ich mit firefox bleiben, und ich werde für jede Algorithmus-Ausführung der Linienbreite in der generierten SVG-Datei angeben. Das wird für mich ausreichend.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top