Wie zeichnen Sie eine gekrümmte Linie zwischen 2 Punkten auf Leinwand?
Habe ich versucht viele verschiedene Ansätze von Beispielen rund um das web, aber ich kann nicht scheinen, um diese zu arbeiten. Ich bin versucht zu machen, eine Methode, die zieht eine geschwungene Linie zwischen 2 Punkten auf einer Leinwand. Die Kurve sein sollte, definiert durch einen radius-parameter.
Unten ist mein Aktueller code.
public OverlayBuilder drawCurvedArrow(int startX, int startY, int endX, int endY, int curveRadius, int padding, int color) {
PointF mPoint1 = new PointF(startX, startY);
PointF mPoint2 = new PointF(endX, endY);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(12);
paint.setColor(color);
Path myPath = new Path();
myPath.moveTo(startX, startY);
myPath.quadTo(mPoint1.x, mPoint1.y, mPoint2.x, mPoint2.y);
canvas.drawPath(myPath, paint);
return this;
}
Bearbeiten
Das problem ist, dass ich kann nicht herausfinden, wie die Krümmung der Linie, die gezeichnet wird auf der Leinwand.
- Versuchen
canvas.drawArc()
. - Willst du damit sagen, dass Sie möchten, zeichnen Sie einen BOGEN zwischen zwei Punkten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich eine Lösung gefunden, um mein problem selbst. Obwohl es waren einige gute Antworten, Sie waren nicht eine genaue Lösung zu meinem speziellen problem.
Hier ist was ich getan habe:
Hier ist mein code, falls jemand anderes ausgeführt werden soll in das gleiche problem:
Und hier ist ein Beispiel, wie die Umsetzung aussieht:
Ich glaube, Sie sind mit falschen Methode zu diesem Zweck, einer der Lösungen, die ich vorschlagen kann, ist unten
und für die Berechnung der startAngle müssen Sie
für sweapAngle finden Sie eine detaillierte Beschreibung hier.
Angenommen, Sie haben zwei Punkte mPoint1 und mPoint2
Methode um die Linie zu zeichnen