我需要帮助来修改代码,以便它代表下面的引用位。我画了一个靶心,但它的尺寸不一样。如何使尺寸匹配?我的代码对错误的大小提出了看法。我的代码只是画了一个靶心。图片:
所以我的目标是使这些同心圆遵循一些比例规范。问题是,我不知道如何在Java中这样做。 具体来说:
...圆的半径与最短的窗口尺寸成比例,即目标公司标识的靶心部分,因此从最近点到最短边缘的距离始终是内部的半径圈。
供参考,这是Target徽标:
这是我已经拥有的;我只需要使它成比例。
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class RedTarget extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int newWidth = (getWidth() / 8);
int newH = (getHeight() / 8);
int widthcorner = (getWidth() / 2) - (newH * 3);
int ywidthcorner = (getHeight() / 2) - (newWidth * 3);
if (getHeight() < getWidth())
{
g.setColor(Color.RED);
g.fillOval(widthcorner, newH, newH * 6, newH * 6);
g.setColor(Color.WHITE);
g.fillOval(widthcorner + newH, newH * 2, newH * 4, newH * 4);
g.setColor(Color.RED);
g.fillOval(widthcorner + newH * 2, newH * 3, newH * 2, newH * 2);
}
else
{
g.setColor(Color.RED);
g.fillOval(newWidth, ywidthcorner, + newWidth * 6, newWidth * 6);
g.setColor(Color.WHITE);
g.fillOval(newWidth * 2, ywidthcorner + newWidth, newWidth * 4, newWidth * 4);
g.setColor(Color.RED);
g.fillOval(newWidth * 3, ywidthcorner + newWidth * 2, newWidth * 2, newWidth * 2);
}
}
public static void main(String[] args)
{
JFrame window = new JFrame("Red Target");
window.setBounds(300, 300, 200, 200);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
RedTarget panel = new RedTarget();
panel.setBackground(Color.WHITE);
Container c = window.getContentPane();
c.add(panel);
window.setVisible(true);
}
}
任何帮助表示赞赏! :)
答案 0 :(得分:1)
设内半径为R,中半径和大半径为2R和3R 我没有看到关于边距的任何线索,所以让我们分配最窄的边距= R / 4
S = Min(Width, Height)
L = Max(Width, Height)
for smaller dimension
3 * R + 2 * 1/4 * R <= S
for larger direction
3 * R + R + 1/4 R <= L
因此我们可以选择尽可能大的内半径:
R = Min(2/7 * S, 4/17 * L)