2010-04-25 86 views
7

我練我的揮杆能力,爲即將到來的測試,並且炒了我的想法畫生物危害標誌是這樣的:如何繪製「生化危機」擺動

alt text http://img62.imageshack.us/img62/8372/lab6b.gif

我可以畫界Elipse2D,但我不知何故需要切割這3個三角形。任何想法,我可以做到這一點?

+11

找到我知道我是迂腐,但是這就是輻射危險符號,不生物危害;)雖然如果你正在練習,實際的生物危害符號可能是另一個很好的嘗試Swing的人。它有很多圈:)(http://en.wikipedia.org/wiki/File:Biohazard.svg)。 – 2010-04-25 21:33:04

+1

@Rich這將是一個該死的好編碼競賽,因此:) – 2010-04-25 21:41:40

+0

@Chris:我實施了真正的生物危害,但我不認爲這是正確的地方把它.. – bragboy 2010-04-26 08:29:54

回答

5

您可以使用Java2D和canvas進行此操作。你可能使用的是Circle和Arc。你應該有三個30度的弧。

我試圖在框架上使用簡單的圖形。

下面是一個嘗試

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

enter image description here

1

也許這實際上很簡單(我不確定Swing API如何處理線條)。畫出從中心到圓周上的點的線條,並跳過這些部分進行線條繪製。

3

可以使用Arc2D類通過指定startextent參數(以度爲單位)繪製每一行。