在Java中居中2D形状

时间:2014-11-01 18:57:05

标签: java 2d centering

我是一名新手程序员,试图将两个2D圆圈叠加在一起。每个圆圈都有不同的尺寸,我知道从xCenter和yCenter添加或减少会在轴上移动形状,但我怎么知道它们是居中的呢?不幸的是,我是一个新手,没有很多工具,所以最简单的信息可能会非常感激。谢谢!

import java.awt.Graphics;
import java.awt.Color;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class RedCross extends JPanel
{
  public void paintComponent(Graphics g)
  {
    super.paintComponent(g);
    int xCenter = getWidth() / 2;
    int yCenter = getHeight() / 2;
    g.setColor(Color.BLUE);
    g.fillOval(xCenter, yCenter, 40, 40);
    g.setColor(Color.RED);
    g.fillOval(xCenter, yCenter, 10, 10);
  }
  public static void main(String[] args)
  {
    JFrame window = new JFrame("Target");
    window.setBounds(300, 300, 200, 200);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    RedCross panel = new Target();
    panel.setBackground(Color.WHITE);
    Container c = window.getContentPane();
    c.add(panel);
    window.setVisible(true);
  }
}

2 个答案:

答案 0 :(得分:0)

用于居中圈子的方法是如何居中对象。只需要在宽度的一半和高度的一半上取一点,这就是你的中心。这是因为圆的中心具有与中心点等距离的圆上的所有点。这就是圈子的定义。

答案 1 :(得分:0)

物体的中心是window/2 - self/2
在代码中:

int xPanel = getWidth();
int yPanel = getHeight();

int sizeCircleOne = 40;
int sizeCircleTwo = 10;

// Drawing circle 1
g.setColor(Color.BLUE);
g.fillOval(
 xPanel/2 - sizeCircleOne/2,
 yPanel/2 - sizeCircleOne/2,
 sizeCircleOne,
 sizeCircleOne
);

// Drawing circle 2
g.setColor(Color.RED);
g.fillOval(
 xPanel/2 - sizeCircleTwo/2,
 yPanel/2 - sizeCircleTwo/2,
 sizeCircleTwo,
 sizeCircleTwo
);

让我知道它是否有效。

快乐编码:) -Charlie