JAVA---AWT 圖形繪制


轉自:http://blog.sina.com.cn/s/blog_4c7656e6010007tn.html

無色天空

1.Awt簡介

1)圖形用戶界面(GUI)可以通過鍵盤或鼠標來響應用戶的操作。

2)抽象窗口工具包(AWT)是一組Java類,此組Java類允許創建圖形用戶界面(GUI)

3)AWT提供用於創建生動而高效的GUI的各種組件。

JAVA--AWP

2.創建GUI

1)容器(container)

A.可以存放組件的區域,可在容器上進行繪制和着色

B.java.awt包中的Container類可直接或間接派生出兩個常用容器:框架(Frame類)和面板(Panel類)。

C.框架是一個帶有邊框的獨立的窗口。

D.面板是包含在窗口中的一個不帶邊框的區域。

 

2)框架(Frame)

A.框架是獨立於Applet和瀏覽器的一個窗口。

B.可以通過以下任一構造函數來創建:

C.Frame():創建一個不含標題的標准窗口

D.Frame(String Title): 創建一個含有標題的窗口,這個標題是由參數title指定的。

E.當一個Frame窗口被創建以后,需要調用setSize()方法來設置窗口的大小,並調用setVisible()來顯示窗口。

 

3)面板 (Panel)

A.面板不是一個單獨的窗口,它只是包含在窗口中的一個區域。

B.面板是可以將許多組件組合起來的一種容器。

C.最簡單的創建面板的方式就是通過面板的構造函數 Panel() 來進行。

D.必須將面板添加到窗體中。

 

3.在框架中顯示信息

1)所有的圖形被畫到相關聯的窗口中。

2)完全可以直接在框架(Frame)中繪入文本信息,甚至可以直接在框架中繪圖。

3)框架經常被設計為一個組件容器。一般首先在一個面板中進行繪制,然后再將這個面板添加到框架。

 

4.paintComponent 方法

1)JPanel 非常適合於繪制自定義圖形

2)其圖形對象是作為 paintComponent() 方法的參數獲得的。

3)要創建自定義圖形,需要編寫擴展 JPanel 類的新類。並覆蓋父類的paintComponent() 方法:

5.Graphics對象

1)paintComponent方法包含一個Graphics類型的參數。

2)Graphics對象記錄針對繪制圖形和文本的一系列設置,比如設置的圖標或當前顏色、字體等。

3)Java中,所有繪制都必須通過一個圖形對象。

6.Graphics對象的局限性

1)可以用Graphics對象繪制的圖形是原始圖形。

2)對於這些圖形,不能使用實數坐標

3)不能繪制虛線或寬度不定的線條

4)不能使用紋理或漸變顏色填充形體

 

7.Graphics2D對象

  為了解決圖形對象的局限性,在Java1.1以后的版本中引入了Java 2D

1)Java2D 包括一個 Graphics2D 類,此類擴展了 Graphics 類,所有圖形方法都可以配合 Graphics2D對象使用

2)Java 2D 圖形的重要功能:

A.顏色和圖案:圖形可以用漸變顏色和填充圖案着色。

B.透明繪制:圖形的不透明度通過 α 透明值控制。

C.本地字體:平台上的所有本地字體都可用於繪制文本。

D.畫筆的顯式控制:可以使用線條的粗細、虛線圖案以及段連接樣式。

E.坐標系的轉換:可以使用平移、縮放、旋轉和剪切

 

8.基本的繪圖方法

  每個 AWT 組件定義一種傳遞 Graphics 對象的 paint

方法,繪制便是在該對象上執行。

public void paint(Graphics g) {

 g.setColor(someColor); // 設置顏色

 g.setFont(someLimitedFont); //設置字體

 g.drawString(...);//繪制字符串

 g.drawLine(...); //畫線

 g.drawRect(...);   // 繪制圖形輪廓

  g.fillRect(...);   // 繪制填充圖形

  g.drawPolygon(...); //繪制圖形輪廓

  g.fillPolygon(...); //繪制圖形輪廓

  ...

}

 

9.Java 2D 中的基本繪圖方法

  public void paintComponent(Graphics g) {

  super.paintComponent(g);

  Graphics2D g2d = (Graphics2D)g;//強制轉換為Graphics2D

  g2d.setPaint(fillColorOrPattern);

  g2d.setStroke(penThicknessOrPattern);

  g2d.setComposite(someAlphaComposite);

  g2d.setFont(anyFont);

  g2d.setColor(anyColor);

  g2d.translate(...);

  g2d.rotate(...);

  g2d.scale(...);

  g2d.shear(...);

  g2d.setTransform(someAffineTransform);

  SomeShape s = new SomeShape(...);

  g2d.draw(s); // 繪制圖形輪廓

  g2d.fill(s); // 繪制填充圖形

}

 

10.Font 類

1)Font 類只有一個構造函數:

       public Font(String name, int style, int pointsize)

–         參數name表示字體的名稱。

–         參數style表示樣式可以是Font.PLAIN、  Font.BOLD 或 Font.ITALIC

–         參數pointsize表示字體的點數,即以磅為單位的字體大小,可以是 11、12、14、16 等。

 

11.列出當前平台上所有可用字體

import java.awt.*;

public class ListFonts {

  public static void main(String[] args) {

      GraphicsEnvironment env = GraphicsEnvironment

              .getLocalGraphicsEnvironment();

      String[] fontNames = env.getAvailableFontFamilyNames();

      System.out.println("可用字體:");

      for (int i = 0; i < fontNames.length; i++)

          System.out.println(" " + fontNames[i]);

  }

}

12.顏色

1)java.awt.Color 類提供了13個可用作標准顏色的常量:

       black(黑色)                    green(綠色)    

       red(紅色)       blue(藍色)

       lightGray(淺灰色) white(白色)  

       cyan(藍綠色)    magenta(洋紅色)            

       yellow(黃色)     darkGray(深灰色)

      orange(橙色)     gray(灰色)   

      pink(粉紅色)

2)Color類的構造函數

  Color(int red,int green,int blue):使用三個分別代表紅、綠、藍的整數來表示它們混合的顏色。這些值必須在0到255之間。

  Color(float red,float green,float blue):用三個浮點數指定紅、綠、藍的相對混合。

3)設置顏色方法

  如果要修改或設置組件的顏色,可以使用下列幾種方法:

  void setColor(Color newColor):設置當前繪制的顏色

  void setForeground(Color):設置前景色

  void setBackground(Color):設置背景色

import java.awt.*;

import javax.swing.*;

class ColorsPanel extends JPanel {

  public void paintComponent(Graphics g) {

      Font f = new Font("Georgia", Font.ITALIC, 16);

      g.setFont(f);

      g.setColor(Color.red);

      g.drawString("Hello", 75, 100);

      g.setColor(new Color(0, 128, 128));

      g.drawString("World", 75, 125);

  }

}

 

13.繪制圖形

1)在 Java 2D 中,通常先創建 Shape 對象,然后調用 Graphics2D 對象的 draw 或 fill 方法。

2)Java 2D 庫以面向對象的方式組合幾何形體。

3)java.awt.geom包中囊括了一些有用的Shape實現。如:

A.Line2D (線)

B.Rectangle2D(矩形)

C.Ellipse2D (橢圓)

4)java.awt.Graphics中提供了一些方法用來繪制圖形對象中的直線和多邊形。方法如下:

    void drawLine(int startX,int startY,int entX,int endY):繪制一條直線

    void drawPolygon(int x[],int y[],int numpoints):繪制多邊形輪廓

    void fillPolygon(int x[],int y[],int numpoints):繪制填充多邊形

  void drawPolyline (int x[],int y[],int numpoints):繪制順序連線,如果第一個點和最后一個點不同,該圖形不封閉

5)繪制矩形和橢圓

void drawRect(int top, int left, int width, int height):繪制矩形邊框

void fillRect(int top, int left,int width, int height) :繪制填充矩形

void drawOval(int top, int left, int width, int height):繪制橢圓邊框

void fillOval(int top, int left,int width, int height) :繪制填充橢圓

 

6)Toolkit 對象

要獲得 Toolkit 對象,可以使用 Toolkit 類的靜態 getDefaultToolkit 方法。

   Toolkit getDefaultToolkit() :返回缺省工具包。

   Image getImage(String filename) :返回一個將從文件中讀取其像素數據的圖像。參數filename包含圖像文件(例如,GIF 或 JPEG 文件)

   boolean drawImage(Image img, int x, int y, ImageObserver ob)  繪制比例圖像。

 

7)顯示圖像文件的實例

A.以下提供了從當前目錄獲取本地圖像文件的代碼(如果圖像文件不在當前目錄中,必須提供完整的路徑名):

        String name="xyz.gif";

        Image img=Toolkit.getDefaultToolkit().getImage(name);

B.要從網絡中獲得圖像文件,必須提供 URL,例如:

          URL u=new URL(http://www.xyz.com/image.gif);

         Image img= Toolkit.getDefaultToolkit().getImage(u) ;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM