gpt4 book ai didi

Java旋转问题

转载 作者:行者123 更新时间:2023-11-29 05:57:24 27 4
gpt4 key购买 nike

当我尝试对当前 g2d 对象应用旋转时,它不会旋转它,而是将它呈现在同一位置(在我的上下文中位于另一个位置之上)。根据我对 rotate 方法的理解,它将转换应用于当前图形上下文,转换它之后出现的任何渲染的像素(这可能是我出错的地方)。这是有问题的代码:

@Override
public void paint(final Graphics graphics) {
super.paint(graphics);
final Graphics2D g2d = (Graphics2D) graphics;
....
....
g2d.setColor(Color.RED);
g2d.setStroke(new BasicStroke(SMALL_LINE_THICKNESS));
if (isLattice1Drawn) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1));
// lattice1 and lattice2 are Polygon objects
g2d.draw(lattice1);
// This fades in the second Polygon over the first
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
// This line should rotate it, but doesn't
g2d.rotate(Math.toRadians(210));
g2d.draw(lattice2);
.....

谢谢,迈克

编辑 1根据 Jeff 的建议,我尝试在绘画中只进行旋转和绘图,留下以下代码:

@Override
public void paint(final Graphics graphics) {
super.paint(graphics);
final Graphics2D g2d = (Graphics2D) graphics;
g2d.rotate(Math.toRadians(210));
g2d.draw(lattice2);
return;
// Rest of paint .................

不幸的是,这没有帮助,欢迎任何其他建议。

编辑 2:当我不调用旋转时,多边形被渲染,但是当我什么都不做时。谁能解释一下?

最佳答案

我从编辑 2 中了解到的是:旋转确实有效。但是,由于旋转是围绕原点进行的,因此多边形的旋转坐标最终位于可见区域之外。您可以通过旋转较小的度数来测试这一点。

然后,如果所需的操作是围绕其质心旋转多边形,请改用以下 Graphics2D 方法:

void rotate(double theta, double x, double y) 

关于Java旋转问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11545254/

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