次のテストに向けてスイングの練習をしているのですが、フライドがバイオハザードのサインをこんな風に描くアイデアをくれました。
代替テキスト http://img62.imageshack.us/img62/8372/lab6b.gif
Elipse2D で円を描くことはできましたが、3 つの三角形を切り取る必要があります。どうすればそれを行うことができますか?
次のテストに向けてスイングの練習をしているのですが、フライドがバイオハザードのサインをこんな風に描くアイデアをくれました。
代替テキスト http://img62.imageshack.us/img62/8372/lab6b.gif
Elipse2D で円を描くことはできましたが、3 つの三角形を切り取る必要があります。どうすればそれを行うことができますか?
これには Java2D と canvas を使用できます。使用している可能性があるのは、Circle と Arc です。30 度の円弧が 3 つ必要です。
フレーム越しにシンプルなグラフィックを使ってみました。
ここに試みがあります
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JComponent;
import javax.swing.JFrame;
public class Biohazard {
public static void main(String[] args) {
new Biohazard();
}
public Biohazard() {
JFrame frame = new JFrame("Biohazard");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new MyComponent());
frame.setSize(260, 280);
frame.setVisible(true);
}
public class MyComponent extends JComponent {
public void paint(Graphics g) {
int height = 120;
int width = 120;
g.setColor(Color.yellow);
g.fillOval(60, 60, height, width);
g.setColor(Color.black);
g.drawOval(60, 60, height, width);
int swivels = 6;
int commonx, commony, commonh, commonw;
for(int i=0;i<swivels;i++){
commonx = commony = 120-i*10;
commonh = commonw = i*20;
g.drawArc(commonx, commony, commonh, commonw, 60 , 60);
g.drawArc(commonx, commony, commonh, commonw, 180 , 60);
g.drawArc(commonx, commony, commonh, commonw, 300 , 60);
}
}
}
}
元のもの : ソース コードはhttp://pastebin.com/HSNFx7Gqにあります。
このクラスを使用して、およびパラメータを度単位でArc2D
指定することにより、各線を描画できます。start
extent
たぶん、これは実際には非常に簡単です (Swing API が行をどのように処理するかはわかりません)。円周上の点に中心から出る線を引き、その部分だけ飛ばして線画にします。