2010-04-25 10 views
7

sto praticando le mie capacità a battente per il test cui è decisivo, e fritti mi ha dato idea di disegnare segnale di rischio biologico come questo:Come disegnare 'rischio biologico' con altalena

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

ho potuto disegnare i cerchi con Elipse2D, ma poi ho in qualche modo bisogno di tagliare quei 3 triangoli. Qualche idea su come posso farlo?

+11

So di essere pedante, ma questo è il simbolo di pericolo di radiazioni, non rischio biologico;) Anche se il vero simbolo del rischio biologico potrebbe essere un altro buon tentativo di provare con Swing se stai praticando. Ha molti cerchi :) (http://en.wikipedia.org/wiki/File:Biohazard.svg). –

+1

@Rich Sarebbe una concorrenza di codifica dannatamente buona per SO :) –

+0

@Chris: Ho implementato il vero rischio biologico ma non penso che questo sia il posto giusto per dirlo .. – bragboy

risposta

5

È possibile utilizzare Java2D e canvas per questo. Le cose che potresti usare sono Circle e Arc. Dovresti avere tre archi con 30 gradi.

Ho provato a utilizzare una grafica semplice sul telaio.

Qui è un tentativo

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); 
      } 
     } 
    } 
} 

L'originale: il codice sorgente può essere trovato alla http://pastebin.com/HSNFx7Gq

enter image description here

1

Forse questo è in realtà abbastanza semplice (non sono sicuro di come l'API Swing gestisce le linee). Disegna le linee che escono dal centro verso i punti sulla circonferenza di un cerchio e salta semplicemente queste parti per il disegno a tratteggio.

3

È possibile utilizzare la classe Arc2D per disegnare ogni riga specificando i parametri start e extent in gradi.