Also zeichne ich dieses Dreieck in Android-Karten mit dem folgenden Code in meiner Zeichenmethode:
paint.setARGB(255, 153, 29, 29);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setAntiAlias(true);
Path path = new Path();
path.moveTo(point1_returned.x, point1_returned.y);
path.lineTo(point2_returned.x, point2_returned.y);
path.moveTo(point2_returned.x, point2_returned.y);
path.lineTo(point3_returned.x, point3_returned.y);
path.moveTo(point3_returned.x, point3_returned.y);
path.lineTo(point1_returned.x, point1_returned.y);
path.close();
canvas.drawPath(path, paint);
Die pointX_returned sind die Koordinaten, die ich von den Feldern erhalte. Sie sind im Grunde Breiten- und Längengrade. Das Ergebnis ist ein schönes Dreieck, aber der Insider ist leer und daher kann ich die Karte sehen. Gibt es eine Möglichkeit, es irgendwie aufzufüllen?
Antworten:
Sie müssen wahrscheinlich etwas tun wie:
Und verwenden Sie diese Farbe für Ihren Pfad anstelle Ihres ARGB. Stellen Sie sicher, dass der letzte Punkt Ihres Pfades auf dem ersten endet. Dies ist auch sinnvoll.
Sag mir bitte, ob es funktioniert!
quelle
Ok, ich habe es geschafft. Ich teile diesen Code für den Fall, dass jemand anderes ihn benötigt:
Danke für den Hinweis Nicolas!
quelle
lineTo()
.close()
macht das automatisch.path
zu einer Instanzvariablen, denken Sie daran nennenpath.reset()
nachcanvas.drawPath()
.Sie können auch Vertice verwenden:
quelle
Diese Funktion zeigt, wie aus einer Bitmap ein Dreieck erstellt wird. Erstellen Sie also ein dreieckig zugeschnittenes Bild. Probieren Sie den folgenden Code aus oder laden Sie das Demo-Beispiel herunter
Die obige Funktion gibt ein dreieckiges Bild zurück, das auf Leinwand gezeichnet wurde. Weiterlesen
quelle
Verwenden Sie die Antwort von @ Pavel als Leitfaden. Hier ist eine Hilfsmethode, wenn Sie nicht über die Punkte verfügen, aber Start x, y sowie Höhe und Breite haben. Kann auch invertiert / verkehrt herum zeichnen - was für mich nützlich ist, da es als Ende des vertikalen Balkendiagramms verwendet wurde.
quelle
quelle
Sie müssen path.moveTo nach der ersten Initiale entfernen.
quelle
Nicht
moveTo()
nach jedemlineTo()
Mit anderen Worten, entfernen Sie alle
moveTo()
außer dem ersten.Im Ernst, wenn ich nur den Code von OP kopiere und einfüge und die unnötigen
moveTo()
Aufrufe entferne , funktioniert es.Sonst muss nichts getan werden.
EDIT: Ich weiß, dass das OP bereits seine "endgültige Arbeitslösung" veröffentlicht hat, aber er hat nicht angegeben, warum es funktioniert. Der eigentliche Grund war für mich ziemlich überraschend, daher hatte ich das Bedürfnis, eine Antwort hinzuzufügen.
quelle