Подтвердить что ты не робот

Как нарисовать круг с заданными координатами X и Y как среднее пятно круга?

Я разработал телекоммуникационное приложение для определения уровней сигнала от башен. Я использовал java swing, и у меня возникла проблема при рисовании круга вокруг данной точки местоположения башни передатчика мобильного сигнала. Я уже вычислил координаты X, Y, а также значение радиуса.

Пожалуйста, найдите приведенный ниже код, который я использовал для рисования круга, и у него проблемы.

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

Проблема заключается в том, что он создает круг, но он не принимает координаты X и Y как центральную точку. Координаты X и Y занимали верхнюю левую точку круга.

Может ли кто-нибудь помочь мне нарисовать круг, задав координаты X и Y как центральную точку круга.

4b9b3361

Ответ 1

fillOval соответствует овалу внутри прямоугольника, with width=r, height = r вы получаете круг. Если вы хотите, чтобы fillOval(x,y,r,r) нарисовал круг с центром в точке (x, y), вам придется смещать прямоугольник на половину его ширины и половину его высоты.

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

Это будет рисовать круг с центром в x,y

Ответ 2

Итак, мы все делаем ту же домашнюю работу?

Странно, насколько неправильный ответ не соответствует действительности. Помните, что draw/fillOval принимает высоту и ширину как параметры, а не радиус. Поэтому, чтобы правильно рисовать и центрировать круг с предоставленными пользователем значениями x, y и радиуса, вы должны сделать что-то вроде этого:

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

}

Ответ 3

Замените линию рисования на

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

Это должно сделать левую верхнюю часть вашего круга правильным местом, чтобы центр был (X,Y), по крайней мере, до тех пор, пока точка (X - r,Y - r) имеет оба компонента в диапазоне.

Ответ 4

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

Ответ 5

оба ответа неверны. он должен читать:

x-=r;
y-=r;


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

Ответ 6

Единственное, что сработало для меня:

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

Ответ 7

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

}