gpt4 book ai didi

java - 旋转两条平行线创建一个 X

转载 作者:行者123 更新时间:2023-11-30 08:35:28 26 4
gpt4 key购买 nike

下面的代码是我用来旋转两个矩形的代码如下

Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setColor(Color.WHITE);

//r1
Rectangle2D r1 = new Rectangle2D.Double(0, 0, 50, 4);
g2d.rotate(Math.toRadians(45));
g2d.fill(r1);

//r3
Rectangle2D r3 = new Rectangle2D.Double(0, 25, 50, 4);
g2d.rotate(Math.toRadians(-90));
g2d.fill(r3);

这创建了一个看起来像这样的东西

enter image description here

而我正在尝试创建看起来像这样的东西

enter image description here

这是因为当旋转矩形时,它们都围绕点 0,0 旋转。为了解决这个问题,我尝试使用 rotate(double theta, double x, double y) .但是我无法正确使用它。例如当我尝试过

Rectangle2D r3 = new Rectangle2D.Double(0, 25, 50, 4);
g2d.rotate(Math.toRadians(-90), 25, 25);

Rectangle2D r3 = new Rectangle2D.Double(0, 25, 50, 4);
g2d.rotate(Math.toRadians(-90), 0, 25);

当两个矩形都围绕点 0,0 旋转时,我得到了类似的意外结果。如果能解决我的问题,我将不胜感激。

如果你想知道我为什么这样做,那是因为我希望产生类似于你点击看到的 3 条平行线时的效果 here当我完成图形编码时

最佳答案

package test;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;

import javax.swing.*;

public class Cross extends JPanel {

private Rectangle2D rectangle;

Cross() {
rectangle = new Rectangle2D.Double(0, 0, 50, 4);
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.red);
g2.fillRect(0, 0, getWidth(), getHeight());

g2.setColor(Color.white);
AffineTransform at = g2.getTransform();
g2.translate(5, 5);
g2.rotate(Math.toRadians(45));
g2.fill(rectangle);

g2.setTransform(at);
g2.translate(5, 5 + Math.sqrt(2) * 25);
g2.rotate(Math.toRadians(-45));
g2.fill(rectangle);

g2.setTransform(at);
}

public static void main(String[] args) {
JFrame frame = new JFrame("Cross");
frame.add(new Cross());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(128, 128);
frame.setVisible(true);
}



}

尽管我认为我可能在数学方面的某个地方犯了错误(看起来有点奇怪),但这应该会给你一个想法。

关于java - 旋转两条平行线创建一个 X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38189872/

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