triangulo lineas figuras dibujar con como circulo asteriscos java swing jpanel java-2d paintcomponent

java - lineas - ¿Cómo dibujar un círculo con las coordenadas X e Y dadas como el punto medio del círculo?



java 2d netbeans (9)

He desarrollado una aplicación de telecomunicaciones para localizar las intensidades de señal de las torres. He utilizado Java Swift y tengo un problema al dibujar el círculo alrededor del punto dado de la ubicación de la torre del transmisor de señal móvil. Ya he calculado las coordenadas X, Y y también el valor del radio.

Por favor, encuentre el siguiente código que he usado para dibujar el círculo y tiene problemas.

JPanel panelBgImg = new JPanel() { public void paintComponent(Graphics g) { g.drawOval(X, Y, r, r); } }

El problema es que crea el círculo pero no tomó las coordenadas X e Y como el punto central. Tomó las coordenadas X e Y como el punto superior izquierdo del círculo.

¿Podría alguien ayudarme a dibujar el círculo teniendo las coordenadas X e Y dadas como el punto central del círculo?


¿Entonces todos estamos haciendo el mismo trabajo en casa?

Es extraño cómo la respuesta más votada es incorrecta. Recuerde, draw / fillOval toma la altura y el ancho como parámetros, no como el radio. Entonces, para dibujar y centrar correctamente un círculo con los valores de x, y y radio proporcionados por el usuario, haría algo como esto:

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); }


Ambas respuestas son incorrectas. debe leer:

x-=r; y-=r; drawOval(x,y,r*2,r*2);


El fillOval ajusta a un óvalo dentro de un rectángulo, with width=r, height = r obtienes un círculo. Si desea que fillOval(x,y,r,r) dibuje un círculo con el centro en (x, y), tendrá que desplazar el rectángulo por la mitad de su ancho y la mitad de su altura.

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); }

Esto dibujará un círculo con centro en x,y


Esto dibuja un arco con el centro en el rectángulo especificado. Puedes dibujar, semicírculos, cuartos de círculo, etc.

g.drawArc(x - r, y - r, r * 2, r * 2, 0, 360)


Lo único que me funcionó:

g.drawOval((getWidth()-200)/2,(getHeight()-200)/2, 200, 200);


Reemplace su línea de dibujo con

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

Esto debería hacer que la esquina superior izquierda de su círculo sea el lugar correcto para que el centro sea (X,Y) , al menos siempre que el punto (X - r,Y - r) tenga ambos componentes dentro del rango.


import java.awt.Color; import java.awt.Graphics2D; import java.awt.Graphics; import javax.swing.JFrame; public class Graphiic { public Graphics GClass; public Graphics2D G2D; public void Draw_Circle(JFrame jf,int radius , int xLocation, int yLocation) { GClass = jf.getGraphics(); GClass.setPaintMode(); GClass.setColor(Color.MAGENTA); GClass.fillArc(xLocation, yLocation, radius, radius, 0, 360); GClass.drawLine(100, 100, 200, 200); } }


drawCircle(int X, int Y, int Radius, ColorFill, Graphics gObj)


JPanel pnlCircle = new JPanel() { public void paintComponent(Graphics g) { int X=100; int Y=100; int d=200; g.drawOval(X, Y, d, d); } };

Puedes cambiar las coordenadas X, Y y el radio que quieras.