如何用Java编码一个图像的比率以匹配另一个图像?
我需要帮助修改代码,使其代表下面引用的位。我画了一个靶心,但它的尺寸不同。如何使尺寸匹配?我的代码生成了一个错误大小的靶心。我的代码只是吸引了很多人的眼球。这是很好的输出,但我希望图片有一个不同的纵横比。图片: 所以我的目标是使我画的这些同心圆符合一些比率规范。问题是,我不知道如何在Java中实现这一点。 具体而言: …与最短窗口尺寸成比例的圆半径,即目标公司标志的靶心部分,因此从最近点到最短边的距离始终是内圈的半径 作为参考,以下是目标徽标: 这是我已经拥有的;我的代码生成所需的输出,但没有正确的纵横比。我仍然对Java越来越熟悉,谢谢如何用Java编码一个图像的比率以匹配另一个图像?,java,geometry,Java,Geometry,我需要帮助修改代码,使其代表下面引用的位。我画了一个靶心,但它的尺寸不同。如何使尺寸匹配?我的代码生成了一个错误大小的靶心。我的代码只是吸引了很多人的眼球。这是很好的输出,但我希望图片有一个不同的纵横比。图片: 所以我的目标是使我画的这些同心圆符合一些比率规范。问题是,我不知道如何在Java中实现这一点。 具体而言: …与最短窗口尺寸成比例的圆半径,即目标公司标志的靶心部分,因此从最近点到最短边的距离始终是内圈的半径 作为参考,以下是目标徽标: 这是我已经拥有的;我的代码生成所需的输出,但没有
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);
}
}
导入java.awt.Graphics;
导入java.awt.Color;
导入java.awt.Container;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
公共类RedTarget扩展了JPanel
{
公共组件(图形g)
{
超级组件(g);
int newWidth=(getWidth()/8);
int newH=(getHeight()/8);
int-widthcorner=(getWidth()/2)-(newH*3);
int ywidthcorner=(getHeight()/2)-(newWidth*3);
如果(getHeight()
感谢您的帮助!:) 设内径为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
我对这个问题投了否决票,因为您在这里发布了代码,但没有说明它有什么问题。我们希望看到您希望代码做什么,为什么您希望它这样做,它实际上在做什么,以及为什么它是错误的。请你的问题,包括这些信息,然后我会考虑收回我的下票。见:已编辑。这是怎么回事?你在哪里说你的代码实际上在做什么?我试着让它更清楚一点。嗯,我应该把这个放在代码的什么地方?(对不起,我是Java新手)我想,在
super.paintComponent(g)之后代码>似乎R对应于您的新H
R = Min(2/7 * S, 4/17 * L)