Ich schreibe eine einfache SVG Zeichnung App, jetzt versuche ich, Strichzeichnung zu optimieren. Die rohe Variante ist jedes "lineTo" bei jedem mouse move Event zu zeichnen. Es erzeugt schlecht aussehende Schärfe.JS Svg Malerei. Wie verringere ich die Zeichnungsfrequenz der Linien (Mausbewegung)?
Im verwenden globale Variable testInt zu simulieren Verzögerung zwischen lineTo Aktionen, es gibt wirklich schöne glatte Linie, aber scheint wie schlechte Praxis. Kann jemand eine bessere Lösung vorschlagen?
Hier ist meine drawLine Funktionscode (wie ich sagte, es ist im Grunde < Weg modifiziert bestehende> -Element):
drawLine: function(id, X, Y){
var path = document.getElementById(id);
if(path.getAttribute('d'))
{
testInt++;
if(testInt>=6)
{
PathHelper.addLineTo(path, X, Y);
testInt = 0;
}
}
else
{
PathHelper.moveTo(path, X, Y);
}
}
PathHelper ist erzeugt nur die richtige Zeichenfolge und fügt sie in bereits erstellten Pfad.
Oh, ich habe diese Verschlussfunktion vergessen. Danke) –
Ich habe entdeckt, dass Timeout nicht die beste Wahl ist, weil wenn der Benutzer seine Maus langsam bewegt - es schafft diese "Schärfe". Ich habe meine vorherige Entscheidung in Kombination mit der Logik der Schließung verwendet. –
@StasGarcia, als weitere Alternative: Vielleicht könnten Sie den Abstand zwischen den zuletzt gezeichneten Koordinaten und den aktuellen Mauskoordinaten berechnen. Zeichnen Sie dann die neue Linie nur dann, wenn der Abstand über einem Schwellenwert liegt. –