RenderMan & RISpec >> I rendered myself to death ...

by Gerry Lintonice » Wed, 19 Oct 2005 10:29:30 GMT

Now my skeleton is sitting before my computer and my ghost is typing
this message ...


Similar Threads

1. I can't run dxviewer compiled by myself...

2. Teaching myself graphics and need some help

Below is a small app I wrote to teach myself how to use custom painting.
Could someone take a look and give me some pointers on how I built it.
I'm not sure if I have this right, it seems to break down after 4 or 5
times.

Opens with a small blank frame and user then select to add buttons, once
buttons are visible the user can modify shape and color, or change the
number of buttons.

Thanks
Jim
/*
 * TestGraphics.java
 *
 *
 */

import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.geom.*;
import java.awt.FlowLayout;
import java.util.Random;


public class TestGraphics extends javax.swing.JFrame {
  private GraphicsPanel graphicsPanel;
  private static final JColorChooser colorChooser = new
javax.swing.JColorChooser();

  /** Creates new form TestGraphics */
  public TestGraphics () {
    initComponents ();
    graphicsPanel = new GraphicsPanel();
    getContentPane().add(graphicsPanel, "Center");
    setSize(500, 400 );


  }

  /** This method is called from within the constructor to
   * initialize the form.
   * WARNING: Do NOT modify this code. The content of this method is
   * always regenerated by the FormEditor.
   */
  private void initComponents () {
    jPanel1 = new javax.swing.JPanel ();
    addButtonsButton = new javax.swing.JButton ();
    changeShapeButton = new javax.swing.JButton ();
    changeColorButton = new javax.swing.JButton ();
    addWindowListener (new java.awt.event.WindowAdapter () {
      public void windowClosing (java.awt.event.WindowEvent evt) {
        exitForm (evt);
      }
    }
    );


      addButtonsButton.setText ("# of buttons");
      addButtonsButton.addActionListener (new java.awt.event.ActionListener
() {
        public void actionPerformed (java.awt.event.ActionEvent evt) {
          addButtonsButtonActionPerformed (evt);
        }
      }
      );

      jPanel1.add (addButtonsButton);

      changeShapeButton.setText ("Shape");
      changeShapeButton.addActionListener (new java.awt.event.ActionListener
() {
        public void actionPerformed (java.awt.event.ActionEvent evt) {
          changeShapeButtonActionPerformed (evt);
        }
      }
      );

      jPanel1.add (changeShapeButton);

      changeColorButton.setText ("Color");
      changeColorButton.addActionListener (new java.awt.event.ActionListener
() {
        public void actionPerformed (java.awt.event.ActionEvent evt) {
          changeColorButtonActionPerformed (evt);
        }
      }
      );

      jPanel1.add (changeColorButton);


    getContentPane ().add (jPanel1, java.awt.BorderLayout.NORTH);

  }

  private void addButtonsButtonActionPerformed (java.awt.event.ActionEvent
evt) {
      Random r = new Random();
      int number = r.nextInt( 4 ) + 1;
      if( graphicsPanel.getComponentCount() != 0)
          graphicsPanel.removeAll();
          graphicsPanel.validate();
      graphicsPanel.setNumber(number);
      graphicsPanel.createTextPanes();


  }

  private void changeColorButtonActionPerformed (java.awt.event.ActionEvent
evt) {

       java.awt.Color c = colorChooser.showDialog (this, "",
java.awt.Color.lightGray);
       graphicsPanel.setColor (c);

  }

  private void changeShapeButtonActionPerformed (java.awt.event.ActionEvent
evt) {
    if( graphicsPanel.getShape().equals("circle"))
        graphicsPanel.setShape("square");
    else
        graphicsPanel.setShape("circle");

  }

  /** Exit the Application */
  private void exitForm(java.awt.event.WindowEvent evt) {
    System.exit (0);
  }

  /**
  * @param args the command line arguments
  */
  public static void main (String args[]) {
    new TestGraphics ().show ();
  }


  // Variables declaration - do not modify
  private javax.swing.JPanel jPanel1;
  private javax.swing.JButton addButtonsButton;
  private javax.swing.JButton changeShapeButton;
  private javax.swing.JButton changeColorButton;
  // End of variables declaration

}
class GraphicsPanel extends javax.swing.JPanel{
  private String shape ="square";
  private java.awt.Color color;
  private JTextPane[] pane;
  private int number;
  SimpleAttributeSet set;
  StyledDocument doc;


  public GraphicsPanel(){
       set =  new SimpleAttributeSet();
       color = java.awt.Color.red;
       //setOpaque(false);
       setBackground( java.awt.Color.blue);
       setLayout(new FlowLayout());
  }

  public void setNumber(int number){
    this.number = number;

  }

  public void setShape(String shape){
       this.shape = shape;
       repaint();
  }

  public String getShape(){
      return shape;
  }

  public void setColor( java.awt.Color color ){
       this.color = color;
       repaint();
  }
  public void createTextPanes(){
     if(number != 0){
       pane = new JTextPane[number];
       for(int i = 0; i < pane.length; i++){
        try{
            pane[i] = new javax.swing.JTextPane();
            pane[i].setOpaque(false);
            pane[i].setPreferredSize(new java.awt.Dimension(200, 100));
            StyleConstants.setAlignment(set, StyleConstants.ALIGN_CENTER );
            StyleConstants.setForeground(set, java.awt.Color.white);
            StyleConstants.setFontFamily(set, "Arial");
            StyleConstants.setFontSize(set, 28);
            doc = pane[i].getStyledDocument ();
            pane[i].setParagraphAttributes (set, true);
            doc.insertString(doc.getLength(),"Button"+String.valueOf(i+1),
set);
            add(pane[i]);
            System.out.println("adding pane "+i);
          }catch(Exception e){e.printStackTrace();}
        }
        validate();
      }
    }
  public void paintComponent(java.awt.Graphics g ){

    super.paintComponent(g);
    java.awt.Graphics2D g2 = (java.awt.Graphics2D)g;
    g2.setRenderingHint( RenderingHints.KEY_ANTIALIASING,
                     RenderingHints.VALUE_ANTIALIAS_ON );
    g2.setRenderingHint( RenderingHints.KEY_RENDERING,
                     RenderingHints.VALUE_RENDER_QUALITY );
    g2.setRenderingHint( RenderingHints.KEY_COLOR_RENDERING,
                    RenderingHints.VALUE_COLOR_RENDER_QUALITY);

    java.awt.Component[] comp = getComponents();

    for( int i = 0; i<comp.length; i++){
         System.out.println("drawing "+comp[i].getBounds()  );
         if( shape.equals ("square")){
              g2.setStroke(new java.awt.BasicStroke(1.0f));
              g2.setColor(color);
              g2.fillRoundRect(comp[i].getX(), comp[i].getY(),
                               comp[i].getWidth(),
comp[i].getHeight(),30,30 );
              g2.setStroke(new java.awt.BasicStroke(3.0f));
              g2.setColor(color.darker());
              g2.drawRoundRect(comp[i].getX(), comp[i].getY(),
                               comp[i].getWidth()-1,
comp[i].getHeight()-1,30,30 );
         }
         else{
              g2.setStroke(new java.awt.BasicStroke(1.0f));
              g2.setColor(color);
              g2.fillOval(comp[i].getX(),comp[i].getY(),
                          comp[i].getWidth(), comp[i].getHeight());
              g2.setStroke(new java.awt.BasicStroke(3.0f));
              g2.setColor(color.darker());
              g2.drawOval(comp[i].getX(), comp[i].getY(),
                               comp[i].getWidth()-1, comp[i].getHeight()-1);
         }
    }

    g2.dispose();

  }
}


3. Look Ma, I did it myself!

4. The Sudden Death

5. The yellow and black dotted line of death

6. There ain't NO SUCH THING AS DEATH


7. The forced death of CRTs

8. Mayan Birth/Death mask in AI/PSD format ?

Anyone know of either an AI or PSD floating around ?