背景
我是一个 Java 新手,今天开始学习它(使用 thenewboston.org)。我已经知道如何制作简单的窗口/表单/ GUI,如何绘制线条等。
我的目标是在 Java 中创建像这样的仪表:
主要问题:
如何创建带有一定透明度并旋转的三角形或其他形状?
我尝试使用Graphics对象绘制类似以下的东西:
public void paint(Graphics g){
g.drawLine(0, 0, 100, 100);
}
但我认为这是错误的方向,因为当我把东西放在图形上时,它只会停留在那里,我无法移动或旋转它。
我必须清除整个图形并重新绘制它才能进行“动画”,或者有更简单的方法吗?
编辑: 我已经知道如何进行抗锯齿处理了(Hovercraft Full Of Eels 已经帮助我解决了这个问题 - 谢谢)。
编辑2:
我的代码实际上长这样:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainWindow extends JPanel {
private Point p1 = new Point(100, 100);
private Point p2 = new Point(740, 450);
public MainWindow() {
this.setPreferredSize(new Dimension(800, 600));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
drawLines(g);
}
private void drawLines(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.DARK_GRAY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setStroke(new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
g.drawLine(p1.x, p1.y, p2.x, p2.y);
}
private void display() {
JFrame f = new JFrame("Main Window");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(this);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
new MainWindow().display();
}
}