Java >> Java tutorial >  >> Java

Hvordan tegner man en cirkel med givne X- og Y-koordinater som midterste plet i cirklen?

fillOval passer til en oval inde i et rektangel, with width=r, height = r du får en cirkel. Hvis du vil have fillOval(x,y,r,r) for at tegne en cirkel med centrum ved (x,y) skal du forskyde rektanglet med halvdelen af ​​dets bredde og halvdelen af ​​dets højde.

public void drawCenteredCircle(Graphics2D g, int x, int y, int r) {
  x = x-(r/2);
  y = y-(r/2);
  g.fillOval(x,y,r,r);
}

Dette vil tegne en cirkel med centrum ved x,y


Så vi laver alle det samme hjemmearbejde?

Mærkeligt, hvordan det mest opstemte svar er forkert. Husk, draw/fillOval tager højde og bredde som parametre, ikke radius. Så for at tegne og centrere en cirkel korrekt med x-, y- og radiusværdier, der er angivet af brugeren, ville du gøre noget som dette:

public static void drawCircle(Graphics g, int x, int y, int radius) {

  int diameter = radius * 2;

  //shift x and y by the radius of the circle in order to correctly center it
  g.fillOval(x - radius, y - radius, diameter, diameter); 

}

Udskift din tegnelinje med

g.drawOval(X - r, Y - r, r, r)

Dette skulle gøre den øverste venstre del af din cirkel til det rigtige sted at få midten til at være (X,Y) ,i det mindste så længe som punktet (X - r,Y - r) har begge komponenter inden for rækkevidde.


Java tag