2010-04-25 15 views
7

estoy practicando mis habilidades oscilación para la próxima prueba, y se fríe me dio la idea para dibujar señal de peligro biológico como esto:Cómo dibujar 'Biohazard' con swing

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

pude dibujar los círculos con Elipse2D, pero luego de alguna manera necesito cortar esos 3 triángulos. ¿Alguna idea de cómo puedo hacer eso?

+11

Sé que estoy siendo pedante, pero eso es el símbolo de peligro de radiación, no riesgo biológico;) Aunque el verdadero símbolo de riesgo biológico podría ser otro bueno para probar con Swing si estás practicando. Tiene muchos círculos :) (http://en.wikipedia.org/wiki/File:Biohazard.svg). –

+1

@Rich Esa sería una muy buena competencia de codificación para SO :) –

+0

@Chris: Implementé el riesgo biológico real, pero no creo que este sea el lugar correcto para ponerlo ... – bragboy

Respuesta

5

Puede usar Java2D y lienzo para esto. Las cosas que puedes estar usando son: Círculo y Arco. Deberías tener tres arcos con 30 grados.

Intenté usar gráficos simples sobre el marco.

Aquí es un intento

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

El original: código fuente se puede encontrar en http://pastebin.com/HSNFx7Gq

enter image description here

1

Quizás esto sea bastante fácil (no estoy seguro de cómo la API Swing maneja las líneas). Dibuje líneas que salen del centro hacia los puntos en la circunferencia de un círculo, y simplemente saltee esas porciones para dibujar líneas.

3

Puede usar la clase Arc2D para dibujar cada línea especificando los parámetros start y extent en grados.