背景
我完全是 Java 新手,今天我开始学习它(通过thenewboston.org)。我已经知道如何制作简单的 windows/forms/gui,如何画线等。
我的目标是像这样在 Java 仪表中创建:
这是我在 .NET C# WPF 中创建的量规,现在我想将其重写为 Java。
主要问题:
如何创建具有一定透明度的三角形或其他形状并旋转它?
我试图通过使用这样的 Graphics 对象来绘制一些东西:
public void paint(Graphics g){
g.drawLine(0, 0, 100, 100);
}
但我认为这是错误的方向,因为当我在图形上放置一些东西时 - 它只是停留在那里,我无法移动或旋转它。
我必须清除整个图形并再次绘制它以制作某种“动画”,还是有更简单的方法?
编辑:我已经知道如何抗锯齿(充满鳗鱼的气垫船已经在这方面帮助了我 - 谢谢)。
编辑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();
}
}