バックグラウンド
完全な Java 初心者の私は、今日 ( thenewboston.orgで) Java の学習を開始しました。単純なウィンドウ/フォーム/GUI の作成方法、線の描画方法などは既に知っています。
私の目標は、次のような Java ゲージで作成することです。
これは私が.NET C# WPFで作成したゲージで、これを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();
}
}