package com.graphics; import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JPanel; /** * 1:Graphics類是全部圖形上下文的抽象基類。 * * 2:Graphics2D繼承了Graphics類,實現了功能更增強大的繪圖操做的集合。 * 因爲Graphics2D類是Graphics類的擴展,也是推薦使用的java繪圖類 * 因此本章主要介紹使用Graphics2D類實現JAVA繪圖 * * 3:Graphics類使用的不一樣的方法實現不一樣的繪製 * @author biexiansheng * */ public class DrawCircle extends JFrame{ private final int OVAL_WIDTH=80;//圓形的寬 private final int OVAL_HEIGHT=80;//圓形的高 public DrawCircle(){ super(); initialize();//調用初始化方法 } //初始化方法 private void initialize(){ this.setSize(300, 200);//設置窗體的大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設置窗體的關閉方式 setContentPane(new DrawPanel());//設置窗體面板爲繪圖面板對象 this.setTitle("繪圖實例2");//設置窗體標題 } class DrawPanel extends JPanel{ public void paint(Graphics g){ super.paint(g); g.drawOval(10, 10, OVAL_WIDTH, OVAL_HEIGHT);//繪製第1個圓形 g.drawOval(80, 10, OVAL_WIDTH, OVAL_HEIGHT);//繪製第2個圓形 g.drawOval(150, 10, OVAL_WIDTH, OVAL_HEIGHT);//繪製第3個圓形 g.drawOval(50, 70, OVAL_WIDTH, OVAL_HEIGHT);//繪製第4個圓形 g.drawOval(120, 70, OVAL_WIDTH, OVAL_HEIGHT);//繪製第5個圓形 } } public static void main(String[] args) { // TODO Auto-generated method stub DrawCircle dc=new DrawCircle();//初始化對象且調用構造方法 dc.setVisible(true);//窗體可視化 } }
案例運行結果以下java
package com.graphics; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.geom.Ellipse2D; import java.awt.geom.Rectangle2D; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.WindowConstants; /** * 1:Graphics2D是繼承Graphics類編寫的,它包含了Graphics類的繪圖方法並添加了更強的功能 * 是推薦使用的繪圖類, * Graphics2D能夠分別使用不一樣的類表示不一樣的形狀,如Line2D,Rectangle2D等。 * * 2:要繪製指定形狀的圖形,須要先建立並初始化該圖類型的對象,這些圖形類必須是Shape接口 * 的實現類,而後使用Graphics2D類的draw()方法繪製該圖形對象或者使用fill()方法填充 * 該圖形對象 * 語法以下 * draw(Shape form)或者fill(Shape form) * 其中form指實現Shape接口的對象。 * @author biexiansheng * */ public class DrawFrame extends JFrame{ public DrawFrame(){ super(); initialize();//調用初始化方法 } //初始化方法 public void initialize(){ this.setSize(300, 200);//設置窗體大小 //設置窗體的關閉方式 setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); add(new CanvasPanel());//設置窗體面板爲繪圖面板對象 this.setTitle("繪圖實例2");//設置窗體標題 } //建立內部類 class CanvasPanel extends JPanel{ public void paint(Graphics g){ super.paint(g); Graphics2D g2=(Graphics2D)g;//強制類型轉換位Graphics2D類型 //Graphics2D是推薦使用的繪圖類,可是程序設計中提供的繪圖對象大可能是 //Graphics類的實例,這時應該使用強制類型轉換將其轉換爲Graphics Shape[] shapes=new Shape[4];//聲明圖形數組 shapes[0]=new Ellipse2D.Double(5, 5, 100, 100);//建立圓形對象 //建立矩形對象 shapes[1]=new Rectangle2D.Double(110,5,100,100);// shapes[2]=new Rectangle2D.Double(15, 15, 80, 80);//建立矩形對象 shapes[3]=new Ellipse2D.Double(120, 15, 80, 80);//建立圓形對象 for(Shape shape:shapes){//遍歷圖型數組 Rectangle2D bounds=shape.getBounds2D(); if(bounds.getWidth()==80){ g2.fill(shape);//填充圖形 }else{ g2.draw(shape);//繪製圖形 } } } } public static void main(String[] args) { // TODO Auto-generated method stub DrawFrame df=new DrawFrame(); df.setVisible(true); } }
案例運行結果以下,數組
能夠設置顏色,或能夠直接使用g2.setColor(Color.RED);this