【问题标题】:Centering 2D Shapes in Java在 Java 中居中二维形状
【发布时间】:2014-12-28 19:02:02
【问题描述】:

我是一名新手程序员,试图将两个 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);
  }
}

【问题讨论】:

    标签: java 2d centering


    【解决方案1】:

    你用来使你的圈子居中的方法是一个人应该如何居中对象。只需在一半宽度和一半高度上取一个点,这就是你的中心。这是因为圆心在圆上的所有点都与圆心等距。这就是圆的定义。

    【讨论】:

      【解决方案2】:

      对象的中心是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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-08
        • 2012-07-04
        • 2020-09-03
        • 1970-01-01
        • 2018-02-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多