Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用Java编码一个图像的比率以匹配另一个图像?_Java_Geometry - Fatal编程技术网

如何用Java编码一个图像的比率以匹配另一个图像?

如何用Java编码一个图像的比率以匹配另一个图像?,java,geometry,Java,Geometry,我需要帮助修改代码,使其代表下面引用的位。我画了一个靶心,但它的尺寸不同。如何使尺寸匹配?我的代码生成了一个错误大小的靶心。我的代码只是吸引了很多人的眼球。这是很好的输出,但我希望图片有一个不同的纵横比。图片: 所以我的目标是使我画的这些同心圆符合一些比率规范。问题是,我不知道如何在Java中实现这一点。 具体而言: …与最短窗口尺寸成比例的圆半径,即目标公司标志的靶心部分,因此从最近点到最短边的距离始终是内圈的半径 作为参考,以下是目标徽标: 这是我已经拥有的;我的代码生成所需的输出,但没有

我需要帮助修改代码,使其代表下面引用的位。我画了一个靶心,但它的尺寸不同。如何使尺寸匹配?我的代码生成了一个错误大小的靶心。我的代码只是吸引了很多人的眼球。这是很好的输出,但我希望图片有一个不同的纵横比。图片:

所以我的目标是使我画的这些同心圆符合一些比率规范。问题是,我不知道如何在Java中实现这一点。 具体而言:

…与最短窗口尺寸成比例的圆半径,即目标公司标志的靶心部分,因此从最近点到最短边的距离始终是内圈的半径

作为参考,以下是目标徽标:

这是我已经拥有的;我的代码生成所需的输出,但没有正确的纵横比。我仍然对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)