Kreiszeichnung mit dem Bogenweg des SVG
Verwenden die folgende SVG-Pfad zeichnen kann, die zu 99,99% von einem Kreis: (versuchen Sie es auf http://jsfiddle.net/DFhUF/46/ und sehen, wenn Sie sehen, 4 Bögen oder auch nur 2, aber beachten Sie, dass, wenn es ist, DH, es ist gerendert in VML, SVG nicht, aber habe das ähnliche Problem)
M 100 100 a 50 50 0 1 0 0.00001 0
Aber wenn es 99.99999999% von einem Kreis, dann wird sich nichts zeigen?
M 100 800 a 50 50 0 1 0 0.00000001 0
- Und das ist das gleiche mit 100% ein Kreis (es ist immer noch ein Bogen, ist es nicht, nur eine sehr komplette Bogen)
M 100 800 a 50 50 0 1 0 0 0
Wie kann das Problem behoben werden? Der Grund ist, dass ich eine Funktion verwenden, zeichnen Sie einen Anteil von einem Bogen, und wenn ich brauche, um "speziellen Fall" ein von 99,9999% oder 100% Bogen zu verwenden, die Kreis-Funktion, das wäre irgendwie albern.
Wieder, ein Testfall auf jsfiddle mit RaphaelJS ist bei http://jsfiddle.net/DFhUF/46/
(und wenn es VML im IE 8, auch den zweiten Kreis nicht zeigen... du hast es zu ändern 0,01)
Update:
Dies ist, weil ich bin rendering ein Bogen für ein Ergebnis in unserem system, also 3.3 Punkte bekommen 1/3 des Kreises. 0.5 bekommt die Hälfte eines Kreises, und 9,9 Punkte bekommen 99% von einem Kreis. Aber was ist, wenn es gibt scores, die 9.99 in unserem system? Muss ich prüfen, ob es in der Nähe ist zu 99,999% ein Kreis, und verwenden Sie eine arc
Funktion oder eine circle
Funktion entsprechend? Was ist dann mit einer Punktzahl von 9.9987? Die man zu verwenden? Es ist lächerlich, müssen wissen, welche Art von Musik wird eine Zuordnung zu einem "zu vervollständigen Kreis" und wechseln Sie zu einem Kreis funktionieren, und wenn es "eine gewisse 99.9%" eines Kreises oder einer 9.9987 Ergebnis, dann verwenden Sie die arc-Funktion.
InformationsquelleAutor der Frage |
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gleiche für XAML-arc. Schließen Sie einfach das zu 99,99% arc mit einem
Z
und du hast einen Kreis!InformationsquelleAutor der Antwort Todd Main
Ich weiß, es ist etwas spät, aber ich erinnerte mich an diese Frage aus, wenn es neu war, und ich hatte eine ähnliche dillemma, und ich habe versehentlich das "richtige" Lösung, falls jemand noch auf der Suche nach einem:
In anderen Worten:
erreicht werden kann, als ein Pfad mit dieser:
Der trick ist, mit zwei Bögen, der zweite picking up, wo der erste aufgehört hat, und mit dem negativen Durchmesser, um wieder auf den ursprünglichen arc Startpunkt.
Der Grund, warum es nicht getan werden kann als ein voller Kreis in einem Bogen (und ich bin nur spekulieren, da würden Sie sagen, zeichnet einen Bogen von sich (sagen wir mal 150,150) zu sich selbst (150,150), die es macht, als "oh, ich bin schon da, kein arc nötig!".
Die Vorteile der Lösung, die ich anbiete, sind:
Nichts von alledem wäre die Sache, wenn Sie würde nur lassen textpaths zu akzeptieren, Formen. Aber ich denke, Sie vermeiden, dass die Lösung, da Sie Form-Elemente wie Kreis, nicht technisch eine "start" - Punkt.
jsfiddle demo: http://jsfiddle.net/crazytonyi/mNt2g/
Update:
Wenn Sie den Pfad für eine
textPath
Referenz-und Sie wollen den text zu Rendern, der auf dem äußeren Rand des Bogens, die Sie verwenden würden, die genau die gleiche Methode, aber ändern Sie die sweep-flag von 0 auf 1, so dass es behandelt die außerhalb des Pfades, wie die Oberfläche anstatt des innen (denken Sie an die1,0
als jemand sitzt in der Mitte und zeichnen einen Kreis um sich herum, während1,1
wie jemand zu Fuß rund um das Zentrum des radius der Entfernung und ziehen Ihre Kreide neben Ihnen, wenn es das ist keine Hilfe). Hier ist der code wie oben, jedoch mit der änderung:InformationsquelleAutor der Antwort Anthony
Finden Sie das Anthony ' s Lösung hier ist eine Funktion um den Pfad:
InformationsquelleAutor der Antwort
Einen ganz anderen Ansatz:
Statt hantieren mit Pfaden angeben, einen Bogen in svg, können Sie auch ein Kreis-element, und geben eine stroke-dasharray, in pseudo-code:
Seiner Einfachheit ist der Hauptvorteil gegenüber der multiple-arc-Pfad-Methode (z.B. bei der Skripterstellung für Sie nur plug-in einen Wert und Sie sind fertig für Lichtbogen-Länge)
Arc beginnt am rechten Punkt, und kann verschoben werden, um mit einem drehen verwandeln.
Hinweis: Firefox hat einen seltsamen bug wo die Drehungen über 90 Grad oder mehr sind, werden ignoriert. So starten Sie die Bogen von der Oberseite verwenden:
InformationsquelleAutor der Antwort
Adobe Illustrator verwendet bezier-Kurven wie SVG, und für die Kreise, die es schafft vier Punkte. Sie können erstellen Sie einen Kreis mit zwei elliptischen Bogen-Befehle...aber dann für einen Kreis im SVG-ich würde eine
<circle />
🙂InformationsquelleAutor der Antwort Phrogz
Ist es eine gute Idee, dass mit zwei arc-Befehl zeichnen Sie einen vollständigen Kreis.
in der Regel, ich benutze ellipse oder Kreis-element zu zeichnen Sie einen Kreis.
InformationsquelleAutor der Antwort cuixiping
Geschrieben als Funktion, so sieht es aus:
InformationsquelleAutor der Antwort
Aufbauend auf Anthony und Anton Antworten, die ich aufgenommen die Fähigkeit, sich zu drehen, die generiert Kreis, ohne die es den Gesamteindruck. Dies ist nützlich, wenn Sie den Pfad für eine animation, und Sie brauchen, um zu kontrollieren, wo es beginnt.
InformationsquelleAutor der Antwort
Für diejenigen, die wie ich waren auf der Suche für ein ellipse-Attribute für Pfad-Konvertierung:
InformationsquelleAutor der Antwort
machte ich ein jsfiddle, es zu tun hier:
link
alles, was Sie tun müssen, ist zu ändern Sie die Eingabe von der Konsole.anmelden und erhalten das Ergebnis in der Konsole
InformationsquelleAutor der Antwort
Andere Möglichkeit wäre die Verwendung von zwei Kubischen Bézier-Kurven. Das ist für iOS-Leute mit pocketSVG, die nicht erkennt svg-arc-parameter.
C x1 y1, x2 y2, x y (oder c dx1 dy1, dx2 dy2 dx dy)
Den letzten Satz von Koordinaten hier (x,y) sind, wo Sie wollen die Linie zu Ende. Die anderen zwei Punkte. (x1,y1) ist der Kontrollpunkt für den Anfang der Kurve und (x2,y2) für den Endpunkt der Kurve.
InformationsquelleAutor der Antwort
Diese Antworten sind viel zu kompliziert.
Einen einfacheren Weg, dies zu tun, ohne die Schaffung von zwei Bögen oder konvertieren in unterschiedlichen Koordinatensystemen..
Diese übernimmt Ihre canvas-Bereich hat eine Breite
w
und Höheh
.Einfach nur die "lange Bogen" - flag, so dass das vollständige Kennzeichen gefüllt wird. Dann machen die Bögen von 99,9999% der Kreis. Optisch ist es das gleiche. Vermeiden Sie das sweep-flag durch die gerade ab den Kreis in der rechten Punkt im Kreis (der einen radius direkt horizontal von der Mitte).
InformationsquelleAutor der Antwort
Diese Beispiele sind alle viel zu kompliziert!!!
Nur mit es6 template-Literale.
Einen einfacheren Weg, dies zu tun, ohne die Schaffung von zwei Bögen..
Diese übernimmt Ihre canvas-Bereich hat die Breite w und Höhe h.
Einfach nur die "lange Bogen" - flag, so dass das vollständige Kennzeichen gefüllt wird. Dann machen die Bögen von 99,9999% der Kreis. Optisch ist es das gleiche. Vermeiden Sie das sweep-flag durch die gerade ab den Kreis in der rechten Punkt im Kreis (der einen radius direkt horizontal von der Mitte).
InformationsquelleAutor der Antwort