Hallo zusammen,
ich zeichne einen Kreis der in unterschiedlich große Stücke zerlegt wird. Diese Teile färbe ich mittels fillArc(.) und zeichne zusätzlich einen Rahmen um den Kreis drawArc(.).
Nun möchte ich jedoch diese unterschiedlich großen Teile mit einem Rahmen versehen. Dies versuche ich indem ich Linien als Begrenzung zeichne. Dazu berechne ich die entsprechenden Punkte auf dem Kreisbogen. Doch irgendwie will das nicht funktionieren. :noe:
Diese Endpunkte stimmen nicht mit den gefüllten Kreisauschnitten überein.
Schaut doch mal bitte über meinen Code-Schnipsel, vielleicht habt ihr eine Lösung. Was mache ich falsch? Allein der Mittelpunkt, von wo aus die Linien zum Rand des Kreises laufen, stimmt nicht.
Gibt es vielleicht auch eine andere Möglichkeit so ein Kreisausschnitt zu umranden?
ich zeichne einen Kreis der in unterschiedlich große Stücke zerlegt wird. Diese Teile färbe ich mittels fillArc(.) und zeichne zusätzlich einen Rahmen um den Kreis drawArc(.).
Nun möchte ich jedoch diese unterschiedlich großen Teile mit einem Rahmen versehen. Dies versuche ich indem ich Linien als Begrenzung zeichne. Dazu berechne ich die entsprechenden Punkte auf dem Kreisbogen. Doch irgendwie will das nicht funktionieren. :noe:
Diese Endpunkte stimmen nicht mit den gefüllten Kreisauschnitten überein.
Schaut doch mal bitte über meinen Code-Schnipsel, vielleicht habt ihr eine Lösung. Was mache ich falsch? Allein der Mittelpunkt, von wo aus die Linien zum Rand des Kreises laufen, stimmt nicht.
Gibt es vielleicht auch eine andere Möglichkeit so ein Kreisausschnitt zu umranden?
Java:
Graphics2D g2 = (Graphics2D) getGraphics();
// Mittelpunktkoordinaten des Kreises
int MP_x = 80;
int MP_y = 100;
// Teile des Kreises als Winkelangabe
int[] arc = {180, 130, 43, 7};
g2.setColor(Color.green);
g2.fillArc(20, 40, 120, 120, 90, -arc[0]);
g2.setColor(Color.orange);
g2.fillArc(20, 40, 120, 120, 90 - arc[0], -arc[1]);
g2.setColor(Color.red);
g2.fillArc(20, 40, 120, 120, 90 - (arc[0] + arc[1]), -arc[2]);
g2.setColor(Color.blue);
g2.fillArc(20, 40, 120, 120, 90 - (arc[0] + arc[1] + arc[2]), -arc[3]);
g2.setColor(Color.black);
g2.drawArc(20, 40, 120, 120, 0, 360);
for (int i = 0; i < 4; i++) {
// Winkel in Bogenmaß
double angle = Math.toRadians(arc[i]);
// (Winkel * Radius) + Position
int pX = (int) (Math.cos(angle) * 60.0) + MP_x;
int pY = (int) (Math.sin(angle) * 60.0) + MP_y;
g2.drawLine(103, 104, pX, pY);
}