Graphics2D is also an abstract class. Its useful methods are shown below.
-clip(Shape sp):void
intersects the current drawing area or clip with the interior of specified shape. The result is the intersection area.
-draw(Shape sp):void
draws the specified shape object.
-drawImage(BufferedImage bi, BufferedImageOp filter, int x,int y): void
draws a BufferedImage object that is filtered with BufferedImageOp.
-drawImage(Image img, AffineTransform af, ImageObserver observer): void
draw an Image object with the transformation specified by AffineTransformed object.
-fill(Shape sp):void
renders a shape that its interior is filled with a default (black color) or specified color, or painting style (GradientPaint, LinearGradientPaint, or TexturePaint).
-rotate(double theta):void
rotate x and y axes of the coordinate system.
-scale(double sx,double sy):void
resizes a shape or an image according to the scaling factors.
-setPaint(Paint paint):void
applies a Paint object to the graphical context.
-setStroke(Stroke stroke):void
applies a Stroke object to the graphical context.
-setTranform(AffineTransform af):void
applies the transformation to the graphical context.
-translate(int x,int y):void
moves the origin to the specified coordinate.
Example 1: draw different shapes
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Ellipse2D;
import java.awt.geom.RoundRectangle2D;
import javax.imageio.ImageIO;
class DrawArea extends Canvas{
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
g2d.draw(new RoundRectangle2D.Double(10, 50, 100, 100,10,10)); //draw a
round rectangle
g2d.draw(new Ellipse2D.Double(10, 200, 100, 100)); //draw an ellipse
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(600,400);
setVisible(true);
add(new DrawArea());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Draw shapes with Graphics2D");
}
}
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Ellipse2D;
import java.awt.geom.RoundRectangle2D;
import javax.imageio.ImageIO;
class DrawArea extends Canvas{
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
g2d.draw(new RoundRectangle2D.Double(10, 50, 100, 100,10,10)); //draw a
round rectangle
g2d.draw(new Ellipse2D.Double(10, 200, 100, 100)); //draw an ellipse
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(600,400);
setVisible(true);
add(new DrawArea());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Draw shapes with Graphics2D");
}
}
Example 2: fill shapes with different colors
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Arc2D;
import java.awt.geom.Ellipse2D.Double;
class DrawArea extends Canvas{
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
g2d.setPaint(Color.GREEN);
g2d.fill(new Ellipse2D.Double(20,50,200,200)); //fill an ellipse with
the green color
g2d.setPaint(Color.RED);
g2d.fill(new Arc2D.Double(20,300,200,200,0,180,Arc2D.PIE)); //fill an
arc with the red color
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(600,400);
setVisible(true);
add(new DrawArea());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Fill shapes");
}
}
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Arc2D;
import java.awt.geom.Ellipse2D.Double;
class DrawArea extends Canvas{
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
g2d.setPaint(Color.GREEN);
g2d.fill(new Ellipse2D.Double(20,50,200,200)); //fill an ellipse with
the green color
g2d.setPaint(Color.RED);
g2d.fill(new Arc2D.Double(20,300,200,200,0,180,Arc2D.PIE)); //fill an
arc with the red color
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(600,400);
setVisible(true);
add(new DrawArea());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Fill shapes");
}
}
Example 3: fill an ellipse with the gradient style
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Ellipse2D;
class DrawArea extends Canvas{
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
GradientPaint gp=new GradientPaint(100,100, Color.RED, 150,200,
Color.BLUE); //create GradientPaint object
g2d.setPaint(gp); //apply the GradientPaint object to the graphical
context
g2d.fill(new Ellipse2D.Double(20,50,200,200)); //fill an ellipse
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(600,400);
setVisible(true);
add(new DrawArea());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Fill ellipse with gradient style");
}
}
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Ellipse2D;
class DrawArea extends Canvas{
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
GradientPaint gp=new GradientPaint(100,100, Color.RED, 150,200,
Color.BLUE); //create GradientPaint object
g2d.setPaint(gp); //apply the GradientPaint object to the graphical
context
g2d.fill(new Ellipse2D.Double(20,50,200,200)); //fill an ellipse
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(600,400);
setVisible(true);
add(new DrawArea());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Fill ellipse with gradient style");
}
}
Example 4: fill a rectangle with images by using TexturePaint
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
class DrawArea extends Canvas{
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
try{
BufferedImage bi=ImageIO.read(new File("d:/earth.png"));
TexturePaint tp=new TexturePaint(bi,new Rectangle2D.Double
(100,100,40,40));
g2d.setPaint(tp);
g2d.fill(new Rectangle2D.Double(100, 100, 200, 200));
}catch(IOException e){}
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(600,400);
setVisible(true);
add(new DrawArea());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Fill shape with TexturePaint");
}
}
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
class DrawArea extends Canvas{
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
try{
BufferedImage bi=ImageIO.read(new File("d:/earth.png"));
TexturePaint tp=new TexturePaint(bi,new Rectangle2D.Double
(100,100,40,40));
g2d.setPaint(tp);
g2d.fill(new Rectangle2D.Double(100, 100, 200, 200));
}catch(IOException e){}
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(600,400);
setVisible(true);
add(new DrawArea());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Fill shape with TexturePaint");
}
}
Example 5: rotate an image
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.AffineTransform;
import java.awt.image.ImageObserver;
class DrawArea extends Canvas implements ImageObserver{
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
Image img=Toolkit.getDefaultToolkit().getImage("d:/image02.png");
g2d.translate(300, 0); //move from origin to coordinate (300,0)
g2d.rotate(Math.PI/2); //rotate the image by Math.PI/2(=1.57)
g2d.drawImage(img, 0, 0,img.getWidth(this), img.getHeight(this),this);
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(600,400);
setVisible(true);
add(new DrawArea());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Image rotation");
}
}
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.AffineTransform;
import java.awt.image.ImageObserver;
class DrawArea extends Canvas implements ImageObserver{
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
Image img=Toolkit.getDefaultToolkit().getImage("d:/image02.png");
g2d.translate(300, 0); //move from origin to coordinate (300,0)
g2d.rotate(Math.PI/2); //rotate the image by Math.PI/2(=1.57)
g2d.drawImage(img, 0, 0,img.getWidth(this), img.getHeight(this),this);
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(600,400);
setVisible(true);
add(new DrawArea());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Image rotation");
}
}
Example 6: make an image gray
import java.awt.*;
import java.awt.color.ColorSpace;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
class DrawArea extends Canvas{
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
ColorConvertOp op=new ColorConvertOp(ColorSpace.getInstance
(ColorSpace.CS_GRAY), new RenderingHints(null)); //create gray color filter object to
apply to the image
try{
BufferedImage bi=ImageIO.read(new File("d:/myprogram/image02.png"));
//create BufferedImage object to encapsulate the image
g2d.drawImage(bi,op,20,50); //show the image
}catch(IOException e){}
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(600,400);
setVisible(true);
add(new DrawArea());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Making an image gray");
}
}
Example 7: make an image brighterimport java.awt.color.ColorSpace;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
class DrawArea extends Canvas{
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
ColorConvertOp op=new ColorConvertOp(ColorSpace.getInstance
(ColorSpace.CS_GRAY), new RenderingHints(null)); //create gray color filter object to
apply to the image
try{
BufferedImage bi=ImageIO.read(new File("d:/myprogram/image02.png"));
//create BufferedImage object to encapsulate the image
g2d.drawImage(bi,op,20,50); //show the image
}catch(IOException e){}
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(600,400);
setVisible(true);
add(new DrawArea());
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Making an image gray");
}
}
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
class DrawArea extends Canvas{
Image img;
DrawArea(){
//create MediaTracker to control the image load
MediaTracker mt=new MediaTracker(this);
//read image file
img=Toolkit.getDefaultToolkit().getImage("d:/myprogram/image02.png");
mt.addImage(img,0); //add image to the tracker
try{
mt.waitForID(0); //wait the image load
}catch(InterruptedException ie){}
}
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
BufferedImage bi=makeBrighter(img);
g2d.drawImage(bi,0,0,bi.getWidth(),bi.getHeight(),null);
}
public BufferedImage makeBrighter(Image img){
BufferedImage bi=new BufferedImage(img.getWidth
(null),img.getHeight(null),BufferedImage.TYPE_INT_ARGB);
BufferedImage resultimg=new BufferedImage(img.getWidth
(null),img.getHeight(null),BufferedImage.TYPE_INT_ARGB);
float[] elements = {0.0f, 1.0f, 0.0f, -
1.0f,1.0f,1.0f,0.0f,0.0f,0.0f};
Kernel kernel = new Kernel(3, 3, elements); //create
kernel object to encapsulate the elements array
ConvolveOp op = new ConvolveOp(kernel,
ConvolveOp.EDGE_NO_OP, null); //create ConvolveOp filter object
Graphics2D graphics2d=bi.createGraphics();
graphics2d.drawImage(img,0,0,bi.getWidth(),bi.getHeight
(),null);
op.filter(bi,resultimg);
return resultimg;
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(800,600);
setVisible(true);
DrawArea da=new DrawArea();
add(da);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
validate();
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Make image brighter");
}
}
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
class DrawArea extends Canvas{
Image img;
DrawArea(){
//create MediaTracker to control the image load
MediaTracker mt=new MediaTracker(this);
//read image file
img=Toolkit.getDefaultToolkit().getImage("d:/myprogram/image02.png");
mt.addImage(img,0); //add image to the tracker
try{
mt.waitForID(0); //wait the image load
}catch(InterruptedException ie){}
}
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
BufferedImage bi=makeBrighter(img);
g2d.drawImage(bi,0,0,bi.getWidth(),bi.getHeight(),null);
}
public BufferedImage makeBrighter(Image img){
BufferedImage bi=new BufferedImage(img.getWidth
(null),img.getHeight(null),BufferedImage.TYPE_INT_ARGB);
BufferedImage resultimg=new BufferedImage(img.getWidth
(null),img.getHeight(null),BufferedImage.TYPE_INT_ARGB);
float[] elements = {0.0f, 1.0f, 0.0f, -
1.0f,1.0f,1.0f,0.0f,0.0f,0.0f};
Kernel kernel = new Kernel(3, 3, elements); //create
kernel object to encapsulate the elements array
ConvolveOp op = new ConvolveOp(kernel,
ConvolveOp.EDGE_NO_OP, null); //create ConvolveOp filter object
Graphics2D graphics2d=bi.createGraphics();
graphics2d.drawImage(img,0,0,bi.getWidth(),bi.getHeight
(),null);
op.filter(bi,resultimg);
return resultimg;
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(800,600);
setVisible(true);
DrawArea da=new DrawArea();
add(da);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
validate();
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Make image brighter");
}
}
Example 8: resize an image
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
class DrawArea extends Canvas{
Image img;
DrawArea(){
//create MediaTracker to control the image load
MediaTracker mt=new MediaTracker(this);
//read image file
img=Toolkit.getDefaultToolkit().getImage("d:/myprogram/image02.png");
mt.addImage(img,0); //add image to the tracker
try{
mt.waitForID(0); //wait the image load
}catch(InterruptedException ie){}
}
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
//resize image: new width=original width multiplied by 1.2
//new height=original height multiplied by 1.2
g2d.scale(1.2, 1.2);
//display the resized image
g2d.drawImage(img,0,0,null);
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(800,600);
setVisible(true);
DrawArea da=new DrawArea();
add(da);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
validate();
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Resizing an image");
}
}
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
class DrawArea extends Canvas{
Image img;
DrawArea(){
//create MediaTracker to control the image load
MediaTracker mt=new MediaTracker(this);
//read image file
img=Toolkit.getDefaultToolkit().getImage("d:/myprogram/image02.png");
mt.addImage(img,0); //add image to the tracker
try{
mt.waitForID(0); //wait the image load
}catch(InterruptedException ie){}
}
public void paint(Graphics g){
Graphics2D g2d=(Graphics2D)g;
//resize image: new width=original width multiplied by 1.2
//new height=original height multiplied by 1.2
g2d.scale(1.2, 1.2);
//display the resized image
g2d.drawImage(img,0,0,null);
}
}
class WindowShow extends Frame{
public WindowShow(String title){
setTitle(title);
setSize(800,600);
setVisible(true);
DrawArea da=new DrawArea();
add(da);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
validate();
}
}
public class AWTTEST {
public static void main(String[] args){
new WindowShow("Resizing an image");
}
}
Amazing blog! Do you have any hints for aspiring writers? I'm planning to start my own website soon but I'm a little lost on everything. Would you advise starting with a free platform like Wordpress or go for a paid option? There are so many options out there that I'm totally confused .. Any ideas? Kudos! filing for divorce Singapore
ReplyDeletePlease let me know if you're looking for a article writer for your site. You have some really good articles and I believe I would be a good asset. If you ever want to take some of the load off, I'd absolutely love to write some material for your blog in exchange for a link back to mine. Please shoot me an e-mail if interested. Thank you! Marble Dining Table Singapore
ReplyDeleteWhat is a blogging site where people give a lot of quick feedback?
ReplyDeleteMy site : 휴게텔