Ho due punti di cerchio e centro di questo cerchio. Voglio disegnare un arco tra questi punti. Il metodo drawArc
è semplice e non adatto al mio scopo. Chiunque aiuto?Disegno arco con 2 punti e centro del cerchio
risposta
Graphics.drawArc
aspetta i seguenti parametri:
- x
- y
- larghezza
- altezza
- startAngle
- arcAngle
Dato il punto di partenza e di arrivo dell'arco, è possibile calcolare un riquadro di delimitazione in cui verrà disegnato l'arco. Questo ti dà abbastanza informazioni per fornire parametri: x, y, larghezza e altezza.
Non hai specificato l'angolo desiderato, quindi credo che potresti sceglierne uno arbitrariamente.
È possibile utilizzare Canvas.drawArc, ma è necessario calcolare gli argomenti di cui ha bisogno:
Diciamo che il centro del cerchio è (x0, y0) e che l'arco contiene il due punti (x1, y1) e (x2, y2). Quindi il raggio è: r = sqrt ((x1-x0) (x1-x0) + (y1-y0) (y1-y0)). Quindi:
int r = (int)Math.sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0));
int x = x0-r;
int y = y0-r;
int width = 2*r;
int height = 2*r;
int startAngle = (int) (180/Math.PI*atan2(y1-y0, x1-x0));
int endAngle = (int) (180/Math.PI*atan2(y2-y0, x2-x0));
canvas.drawArc(x, y, width, height, startAngle, endAngle);
Buona fortuna!
FYI: Questo codice funzionerebbe un po 'meglio se si usassero le variabili 'float' invece di' int'. PI = 3.14, Radici quadrate, ecc. Potresti creare molti zeri se rimani con i tipi 'int'. – jp2code
in teoria si. tuttavia, drawArc() ha parametri int. – botismarius
Questo funziona perfettamente in C# per me..Grazie! – Abhishek
È questo compito? Se è così, taggalo come tale. – javamonkey79
So che esistono le funzioni di meny per disegnare Arc, ma non posso fint adatto – CarolusPl