gpt4 book ai didi

java - 如何动态居中图形

转载 作者:行者123 更新时间:2023-12-01 09:14:50 27 4
gpt4 key购买 nike

尽管在此示例中,X-Y 值是硬编码的,但我们假设用户动态输入值并单击按钮在屏幕上查看结果。

根据最大尺寸计算框架是没有意义的,因为框架对于显示器来说太大了。

如何获取输入的 X-Y 值(无论大小)并使图像在框架内居中显示?

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Area;
import java.awt.geom.Path2D;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class ZoomToXY extends JPanel
{
int x = 0;
public void paint(Graphics g)
{
//Can't see this.
int[] xs2 = {5308, 5306, 4143, 4143, 4120, 4119, 4118, 4117, 4116, 4114, 4112};
int[] ys2 = {4474, 5329, 5306, 5171, 5171, 5173, 5175, 5177, 5179, 5181, 5182};

BasicStroke traceStroke = new BasicStroke (1); //Line thickness
Graphics2D gc = (Graphics2D) g.create();

gc.setColor(Color.RED);
gc.drawPolyline(xs2, ys2, 11);
gc.setStroke(traceStroke);
x++;
}

public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.add(new ZoomToXY());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(20,20, 250,250);
frame.setVisible(true);
}
}

最佳答案

我们看不到多边形或您正在制作的任何东西的原因是因为它超出了框架的边界。让我们来看看。

frame.setBounds(20,20, 250,250);

这条线表示我们只会看到这些边界内的内容,尽管边界外的所有内容也会被绘制但不会显示。尝试在边界内绘制一个矩形并查看。

g.fillRect(20, 20, 100, 100);

您将看到一个矩形。但我该如何解决这个问题呢?由于 5000 像素 x 5000 像素的框架无法在大多数显示器上工作,因此您要么使用较小的分辨率并因此使用较小的坐标,要么实现相机。拥有一台相机,你就可以拥有你想要的大世界,并能够在其中走动。但如果你的框架只能显示 100 像素,而你的多边形是 1000px,我们只能看到其中的 10%,这个问题可以通过 zooming 轻松解决。 。这是topic如何实现游戏摄像机。使用游戏相机,您可以简单地计算图像的中心,然后对其进行平移,非常简单。如果您需要帮助,请询问。

250x250 的框架相当小,可以考虑大一点。另外为什么要把坐标设置为(20, 20)呢?如果您想将 JFrame 置于当前显示器的中心,只需调用:

frame.setLocationRelativeTo(null);

关于java - 如何动态居中图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40633125/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com