2016-07-14 17 views
0

Ich habe diesen Code, um die Pfeilschwanzlinie zwischen 2 Punkt zu zeichnen, aber wie soll ich gekrümmte Linie für Pfeilschwanz zeichnen?Wie zeichne ich einen gekrümmten Pfeil in Leinwand Android

canvas.drawLine(pt1[X], pt1[Y], pt2[X], pt2[Y], paint);//draw line 

Ich möchte so etwas haben, wobei der Pfeil dynamisch

enter image description here

+0

Veröffentlichen Sie einen Screenshot, welche Art von Pfeil Sie zeichnen möchten –

Antwort

0

Abhängig davon, welche Form Sie für die gekrümmte Linie wollen, könnten Sie vielleicht Canvas.drawArc() verwenden, aber das beschränkt ist, zu Abschnitten eines Ovals, die mit den Bildschirmachsen ausgerichtet sind.

Für einen allgemeineren Ansatz definieren Sie Ihre gekrümmte Linie als Path und dann Canvas.drawPath(), um es auf der Zeichenfläche zu rendern. Eine Path kann aus einer beliebigen Anzahl von geraden, quadratischen und kubischen Kurvensegmenten zusammengesetzt sein. (Weitere Informationen finden Sie in der Dokumentation zum Erstellen der gewünschten Path.) Bei einem durchgehenden Pfeilschwanz sollten Sie beim Aufruf drawPath() den Malstil auf FILL festlegen.

+0

Haben Sie ein Beispiel, wie man es zeichnet? –

+0

@ZhengXian - Zeichnen ist nicht das Problem - einfach einen 'Pfad' erstellen und' canvas.drawPath (path, paint); '. Das Problem ist, wie man einen Pfad berechnet. Bei Ihrem Beispielbild handelt es sich um ein schwieriges Layout-Problem, das sich sehr von der ursprünglich von Ihnen gestellten Frage unterscheidet. Werfen Sie einen Blick auf [this thread] (http://stackoverflow.com/questions/5028433/graph-auto-layout-algorithmus) und suchen Sie auch im Internet nach _graph Layout-Algorithmen_. –

+0

Aber gibt es Open-Source-Graph-Layout-Algorithmen für Java-API statt Javascript –