2D-Rendering und Zoomen in mit SVG
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
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
Eine Abhilfe ist z
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.