<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 介紹 > 原文: [https://zetcode.com/gfx/java2d/introduction/](https://zetcode.com/gfx/java2d/introduction/) 在 Java 2D 教程的這一部分中,我們將介紹 Java 2D 技術。 ## 關于 這是 Java 2D 教程。 它是針對初學者的。 本教程將教您 Java 2D 編程的基礎知識。 可以在此處下載本教程中使用的圖像。 ## 矢量圖形 有兩種不同的計算機圖形:矢量圖形和柵格圖形。 柵格(位圖)圖形將圖像表示為像素的集合。 矢量圖形是使用諸如點,線,曲線或多邊形之類的幾何圖元來表示圖像。 這些基元是使用數學方程式創建的。 兩種類型的計算機圖形都有優點和缺點。 矢量圖形的優點是: * 較小的大小 * 無限放大的能力 * 移動,縮放,填充或旋轉不會降低圖像質量 Java 2D API 提供了可用于矢量和柵格圖形的工具。 ## Java 2D API Java 2D 是用于使用 Java 編程語言繪制二維圖形的 API。 Java 2D API 提供以下功能: * 用于顯示設備和打印機的統一渲染模型 * 多種幾何圖元 * 形狀,文字和圖像的命中檢測 * 合成模型 * 增強的色彩支持 * 打印文件 * 控制渲染質量 Java 2D API 增強了 Abstract Windowing Toolkit(AWT)的圖形,文本和圖像處理功能。 AWT 是用于在 Java 中創建用戶界面和圖形的原始工具包。 出于兼容性目的,Java 2D 從技術上講是 AWT 工具箱的超集。 Java 2D 是一項強大的技術。 它可以用來創建豐富的用戶界面,游戲,動畫,多媒體應用或各種特殊效果。 ## 繪畫機制 自定義繪畫代碼應放在`paintComponent()`方法中。 該在繪制時調用此方法。 繪畫子系統首先調用`paint()`方法。 此方法調用以下三個方法: * `paintComponent()` * `paintBorder()` * `paintChildren()` 在特定情況下,我們可能想覆蓋`paintBorder()`或`paintChildren()`方法。 在大多數情況下,我們將覆蓋`paintComponent()`方法。 ## 圖形對象 唯一的`paintComponent's`參數是`Graphics`對象。 它公開了許多繪制 2D 形狀和獲取有關應用圖形環境的信息的方法。 `Graphics2D`類擴展了`Graphics`類,以提供對幾何,坐標轉換,顏色管理和文本布局的更復雜的控制。 在將`Graphics`對象傳遞給`paintComponent()`方法之前,先對其進行初始化,然后將其轉換為`paintBorder()`和`paintChildren()`方法。 這種重用可以提高性能,但是如果繪畫代碼永久更改`Graphics`狀態,則可能會導致問題。 因此,我們必須恢復原始設置或使用`Graphics`對象的副本。 該副本是使用`Graphics`的`create()`方法創建的; 必須稍后使用`dispose()`方法將其釋放。 實際上,如果我們設置以下屬性:字體,顏色和呈現提示,則無需創建`Graphics`對象的副本。 對于所有其他屬性(尤其是剪裁,復合操作和轉換),我們必須創建`Graphics`對象的副本并在以后處置它。 ## 簡單的 Java 2D 示例 我們將創建一個 Java 2D 應用的簡單示例。 `SimpleEx.java` ```java package com.zetcode; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JFrame; import javax.swing.JPanel; class Surface extends JPanel { private void doDrawing(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.drawString("Java 2D", 50, 50); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); doDrawing(g); } } public class BasicEx extends JFrame { public BasicEx() { initUI(); } private void initUI() { add(new Surface()); setTitle("Simple Java 2D example"); setSize(300, 200); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { BasicEx ex = new BasicEx(); ex.setVisible(true); } }); } } ``` 我們在`JPanel`組件上繪制文本。 Java 2D 教程中的許多代碼都重復了。 ```java class Surface extends JPanel { ... } ``` 我們創建一個`Surface`類。 此類將是我們的繪圖面板。 它繼承自`JPanel`組件。 ```java Graphics2D g2d = (Graphics2D) g; ``` `Graphics2D`類是用于在 Java 2D 中渲染圖形的基本類。 它以通用方式表示設備數量。 它擴展了舊的`Graphics`對象。 要進行所有高級操作,必須進行此轉換。 ```java g2d.drawString("Java 2D", 50, 50); ``` 在這里,我們使用`drawString()`方法在面板上繪制一個字符串。 ```java @Override public void paintComponent(Graphics g) { super.paintComponent(g); doDrawing(g); } ``` 自定義繪畫是在`paintComponent()`方法內部執行的,我們將其覆蓋。 `super.paintComponent()`方法調用父類的方法。 準備用于繪圖的組件會做一些必要的工作。 我們將圖形委托給`doDrawing()`方法。 ```java private void initUI() { ... } ``` `initUI()`方法啟動應用的用戶界面。 ```java add(new Surface()); ``` 該表面已添加到`JFrame`容器中。 ```java EventQueue.invokeLater(new Runnable() { @Override public void run() { BasicEx ex = new BasicEx(); ex.setVisible(true); } }); ``` 我們創建代碼示例的實例,并使它在屏幕上可見。 `invokeLater()`方法將應用放置在 Swing 事件隊列中。 它用于確保所有 UI 更新都是并發安全的。 ![Simple Java 2D example](https://img.kancloud.cn/af/01/af01b38e4ac2f03be3608c1b048565d6_300x200.jpg) 圖:簡單 Java 2D example ## 參考 以下資源用于創建本教程: * [Java 平臺,標準版 7 API 規范](http://docs.oracle.com/javase/7/docs/api/) * [JH Labs](http://www.jhlabs.com/java/java2d/reflections/index.html) * [執行卷積運算](http://developer.apple.com/library/mac/#documentation/Performance/Conceptual/vImage/ConvolutionOperations/ConvolutionOperations.html#//apple_ref/doc/uid/TP30001001-CH205-SW1) * Java 2D 演示代碼示例 Java 2D 教程的這一部分是對 Java 2D 庫的介紹。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看