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.