Effects : Shape « 2D Graphics GUI « Java

Java
1. 2D Graphics GUI
2. 3D
3. Advanced Graphics
4. Ant
5. Apache Common
6. Chart
7. Class
8. Collections Data Structure
9. Data Type
10. Database SQL JDBC
11. Design Pattern
12. Development Class
13. Email
14. Event
15. File Input Output
16. Game
17. Generics
18. Hibernate
19. I18N
20. J2EE
21. J2ME
22. JDK 6
23. JSP
24. JSTL
25. Language Basics
26. Network Protocol
27. PDF RTF
28. Reflection
29. Regular Expressions
30. Scripting
31. Security
32. Servlets
33. Spring
34. Swing Components
35. Swing JFC
36. SWT JFace Eclipse
37. Threads
38. Tiny Application
39. Velocity
40. Web Services SOA
41. XML
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
C# / C Sharp
C# / CSharp Tutorial
ASP.Net
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java » 2D Graphics GUI » ShapeScreenshots 
Effects
Effects


import java.awt.AlphaComposite;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;

import javax.swing.JFrame;

import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageDecoder;

public class ShowOff extends Component {
  public static void main(String[] args) {
    try {
      String filename = "largeJava2sLogo.jpg";
      String message = "Java Source and Support";
      int split = 4;
      JFrame f = new JFrame();
      f.getContentPane().setLayout(new BorderLayout());
      ShowOff showOff = new ShowOff(filename, message, split);
      f.add(showOff, BorderLayout.CENTER);
      f.setSize(f.getPreferredSize());
      f.setResizable(false);
      f.setVisible(true);
    catch (Exception e) {
      System.out.println(e);
      System.exit(0);
    }
  }

  private BufferedImage mImage;

  private Font mFont;

  private String mMessage;

  private int mSplit;

  private TextLayout mLayout;

  public ShowOff(String filename, String message, int split)
      throws IOException, ImageFormatException {

    InputStream in = getClass().getResourceAsStream(filename);
    JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(in);
    mImage = decoder.decodeAsBufferedImage();
    in.close();

    mFont = new Font("Serif", Font.PLAIN, 116);

    mMessage = message;
    mSplit = split;

    setSize((intmImage.getWidth()(intmImage.getHeight());
  }

  public void paint(Graphics g) {
    Graphics2D g2 = (Graphics2Dg;

    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);

    drawBackground(g2);
    drawImageMosaic(g2);
    drawText(g2);
  }

  protected void drawBackground(Graphics2D g2) {
    int side = 45;
    int width = getSize().width;
    int height = getSize().height;
    Color[] colors = Color.yellow, Color.cyan, Color.orange, Color.pink,
        Color.magenta, Color.lightGray };
    for (int y = 0; y < height; y += side) {
      for (int x = 0; x < width; x += side) {
        Ellipse2D ellipse = new Ellipse2D.Float(x, y, side, side);
        int index = (x + y/ side % colors.length;
        g2.setPaint(colors[index]);
        g2.fill(ellipse);
      }
    }
  }

  protected void drawImageMosaic(Graphics2D g2) {
    int side = 36;
    int width = mImage.getWidth();
    int height = mImage.getHeight();
    for (int y = 0; y < height; y += side) {
      for (int x = 0; x < width; x += side) {
        float xBias = (floatx / (floatwidth;
        float yBias = (floaty / (floatheight;
        float alpha = 1.0f - Math.abs(xBias - yBias);
        g2.setComposite(AlphaComposite.getInstance(
            AlphaComposite.SRC_OVER, alpha));
        int w = Math.min(side, width - x);
        int h = Math.min(side, height - y);
        BufferedImage tile = mImage.getSubimage(x, y, w, h);
        g2.drawImage(tile, x, y, null);
      }
    }
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
  }

  protected void drawText(Graphics2D g2) {
    FontRenderContext frc = g2.getFontRenderContext();
    mLayout = new TextLayout(mMessage, mFont, frc);
    int width = getSize().width;
    int height = getSize().height;
    Rectangle2D bounds = mLayout.getBounds();
    double x = (width - bounds.getWidth()) 2;
    double y = height - bounds.getHeight();
    drawString(g2, x, y, 0);
    drawString(g2, width - bounds.getHeight(), y, -Math.PI / 2);
  }

  protected void drawString(Graphics2D g2, double x, double y, double theta) {
    g2.translate(x, y);
    g2.rotate(theta);
    String first = mMessage.substring(0, mSplit);
    float width = drawBoxedString(g2, first, Color.white, Color.red, 0);
    String second = mMessage.substring(mSplit);
    drawBoxedString(g2, second, Color.blue, Color.white, width);
    g2.rotate(-theta);
    g2.translate(-x, -y);
  }

  protected float drawBoxedString(Graphics2D g2, String s, Color c1,
      Color c2, double x) {
    FontRenderContext frc = g2.getFontRenderContext();
    TextLayout subLayout = new TextLayout(s, mFont, frc);
    float advance = subLayout.getAdvance();

    GradientPaint gradient = new GradientPaint((floatx, 0, c1,
        (float) (x + advance)0, c2);
    g2.setPaint(gradient);
    Rectangle2D bounds = mLayout.getBounds();
    Rectangle2D back = new Rectangle2D.Double(x, 0, advance, bounds
        .getHeight());
    g2.fill(back);

    g2.setPaint(Color.white);
    g2.setFont(mFont);
    g2.drawString(s, (floatx, (float-bounds.getY());
    return advance;
  }
}

           
       
Related examples in the same category
1. fillRect (int, int, int, int) method draws a solid rectangle
2. Draw lineDraw line
3. Draw a PolygonDraw a Polygon
4. Draw an oval outline
5. Draw a (Round)rectangleDraw a (Round)rectangle
6. Fill a polygonFill a polygon
7. Fill a solid oval
8. Fill a (Round)rectangleFill a (Round)rectangle
9. Change fontChange font
10. Draw rectangle 2Draw rectangle 2
11. Draw ArcDraw Arc
12. Draw EllipseDraw Ellipse
13. Fill a Rectangle 2Fill a Rectangle 2
14. Fill Arc 2Fill Arc 2
15. Draw textDraw text
16. Draw unicode string Draw unicode string
17. Shape combineShape combine
18. Mouse drag and drop to drawMouse drag and drop to draw
19. Arc demonstration: scale, move, rotate, sheerArc demonstration: scale, move, rotate, sheer
20. Hypnosis SpiralHypnosis Spiral
21. Shape Test Shape Test
w_ww_.___j___a_v___a__2___s__.co_m | Contact Us
Copyright 2003 - 08 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.