基於Graphics2D類的繪圖功能,是對AWT中的Graphics類的進一步的擴展和增強。主要體現在:
1。對渲染質量的控制:消除鋸齒以平滑繪制對象的邊緣
2.裁剪、合成和透明度:它們允許使用任意形狀來限定繪制操作的邊界。它們還提供對圖形進行分層以及控制透明度和不透明度的能力。
3.控制和填充簡單及復雜的形狀:這種功能提供了一個 Stroke 代理和一個 Paint 代理,前者定義用來繪制形狀輪廓的筆(定義繪制的筆的寬度和樣式),后者允許用純色、漸變色和圖案來填充形狀。
4。圖像處理和變換:Java 2D 同 Java 高級圖像 API(Java Advanced Imaging API (JAI))協作,支持用大量圖形格式處理復雜的圖像。Java 2D 還為您提供了修改圖像、形狀和字體字符的變換能力。
5。特殊的填充方式,如梯度或者圖案
6.高級字體處理和字符串格式化:允許象操作任何其它圖形形狀一樣操作字體字符。除此以外,可以象文字處理程序一樣,通過為 String 中的字符應用屬性和樣式信息來創建格式化文本。
在Graphics2D模式下的基本繪圖框架。我們可以利用:
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
通過該方法的設置,使圖形去除鋸齒狀,可以得到細膩的圖形。
public void paintComponent(Graphics g1){ super.paintComponent(g1); Graphics2D g=(Graphics2D)g1; Stroke stroke = g.getStroke(); g.setStroke(new BasicStroke(3.5f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_ROUND)); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setColor(new Color(10,255,255)); //畫出曲線
g.draw(new Line2D.Float(x[i], GPHeight-y[i], x[i+1], GPHeight-y[i+1])); g.setStroke( stroke ); //將畫刷復原
}