gpt4 book ai didi

java - 变换后如何得到绝对坐标

转载 作者:行者123 更新时间:2023-11-30 09:50:19 26 4
gpt4 key购买 nike

我正在绘制这样的 Java 2D 东西:

g2.translate( getWidth() / 2, getHeight() / 2 );
g2.rotate( angle );
g2.draw( new Ellipse2D.Double( -1, -1, 1, 1 ) );

现在我想知道椭圆在屏幕上的坐标。知道如何获得它吗?所以我需要从逻辑空间到物理空间的转换。

最佳答案

获取AffineTransform来自 Graphics2D对象并使用 transform(src, dst)转到屏幕坐标的方法(您可以对任何点执行此操作)。如果你想要椭圆的路径,你可以使用 Ellipse2D.getPathIterator(AffineTransform at) - 它返回 PathIterator .

本例获取屏幕上椭圆的中心点:

public static void main(String[] args) {

JFrame frame = new JFrame("Test");


frame.add(new JComponent() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);

Graphics2D g2 = (Graphics2D) g;

g2.translate( getWidth() / 2, getHeight() / 2 );
g2.rotate(Math.PI); // some angle

Ellipse2D.Double ellipse = new Ellipse2D.Double( -10, -10, 10, 10 );
g2.draw(ellipse);

Point2D c = new Point2D.Double(
ellipse.getCenterX(),
ellipse.getCenterY());

AffineTransform at = g2.getTransform();
Point2D screenPoint = at.transform(c, new Point2D.Double());

System.out.println(screenPoint);
}
});

frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

关于java - 变换后如何得到绝对坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5204322/

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