Как нарисовать круг с заданными координатами 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 как центральную точку круга.
Ответы
Ответ 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);
}
}