第12章 繪圖與多媒體 12-1 繪圖的基礎 12-2 Graphics類別的色彩、文字與繪圖 12-3 圖片的載入與顯示

Slides:



Advertisements
Similar presentations
E-portfolio 個人履歷網站教學
Advertisements

3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
第一單元 建立java 程式.
JAVA程序设计 天津工程职业技术学院计算机工程系软件技术教研室.
Java程序设计教程 第一讲 Java概述.
Java System Concepts and Animation Programming
Hello小程序的运行和编译 Java AppletJava小程序的构成 1、关键字
Ch09 繪圖與多媒體 物件導向系統實務.
多媒體.
15 HTML5 API 15-1 偵測瀏覽器的HTML5支援 15-2 HTML5的音效與視訊 15-3 HTML5的繪圖
Java Applet的运行原理 在网页向Java Applet传值 在Java Applet中播放声音 在Java Applet中使用组件
第11章 Java多媒体技术.
2015/Spring 跨平台行動程式進階應用 王派洲老師
Canvas繪圖 Canvas簡介 2D繪圖工具 移動、選轉、縮放.
第 18 章 圖形使用者介面.
第三部分 Java语言编程应用篇 第6章 Java语言的 图形用户界面开发技术 (之二).
Ch02 視窗Swing套件 物件導向系統實務.
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
主講人:資通中心李威頤 校內分機:6111 講義下載: 資料下載
JAVA 程式設計與資料結構 第七章 繼承與Interface.
Ch07 Java Applets 物件導向系統實務.
Java Applet 與事件處理 ShengMinMa.
第1章 認識Arduino.
Chapter 9 設計的精細製作: 行動計算 Software Engineering – An Engineering Approach, James F. Peters & Witold Pedrycz.
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
ANDROID 中的 3D 繪圖 作者:陳鍾誠.
類別(class) 類別class與物件object.
R教學 安裝RStudio 羅琪老師.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
Ch13 執行緒(I) 物件導向系統實務.
Java语言程序设计 第八部分 Applet小程序.
Visual Basic 物件導向程式設計簡介.
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
CH03 為自己的視窗加上小元件 物件導向系統實務.
Java 程式設計 講師:FrankLin.
CH04 視窗中元件排排坐 物件導向系統實務.
第一單元 建立java 程式.
VS.NET 2003 IDE.
Ch20. 計算器 (Mac 版本).
《JAVA程序设计》 语音答疑 辅导老师:高旻.
第 19 章 XML記憶體執行模式.
PowerPoint 2019/4/9.
本章學習目標 學習極座標繪圖與對數繪圖 學習雙y軸繪圖 學習向量場繪圖 學習統計繪圖 在Matlab的環境裡製作動畫
伸峰科技股份有限公司 李書帆 SanfongWeb 網頁編修 伸峰科技股份有限公司 李書帆
把下列各音樂符號和它們的中文名稱配對起來
Java程序设计 第13章 图形.
IIS Internet Information Services
Mathematica 動畫教學 -振動模態
MicroSim pspice.
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
把下列各音樂符號和它們的中文名稱配對起來
Dreamweaver 進階網頁製作 B 許天彰.
第二章 Java基本语法 讲师:复凡.
第6章 面向对象的高级特征 学习目标 本章要点 上机练习 习 题.
Ch03 Layout.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
實驗十:影片播放.
國立台灣大學 關懷弱勢族群電腦課程 By 資訊工程 黃振修
Java语言程序设计 清华大学出版社 第6章 java图形与图像处理.
Cloud Training Material- 事件 Sherman Wang
Activity的生命週期: 播放音樂與影片 靜宜大學資管系 楊子青
小畫家教學 電子版儲存於 學校網頁/學科資訊/電腦科
第2章 Java语言基础.
Applet.
多國語系 建國科技大學 資管系 饒瑞佶.
第五章 自訂佈景主題與文字處理 講授者:詹雅愔.
Summary
方法(Method) 函數.
变量定位图形 Java中数据的类型分为四种:基本数据类型、数组类型、类类型以及接口类型。任何常量和变量都一定是上述四种数据类型中的一种。简单数据类型的实例化有两种:变量和常量。 变量名和常量名必须是Java语言中合法的标识符。 常量是在程序运行期间值不改变的量。 变量是在程序运行期间值可通过赋值改变的量,
InputStreamReader Console Scanner
Presentation transcript:

第12章 繪圖與多媒體 12-1 繪圖的基礎 12-2 Graphics類別的色彩、文字與繪圖 12-3 圖片的載入與顯示 12-4 動畫效果 12-5 Java Applet的圖片載入 12-6 音樂的播放

12-1 繪圖的基礎 12-1-1 Graphics繪圖類別 12-1-2 座標系統與JComponent元件 12-1-3 JFrame類別的畫布 12-1-4 JPanel類別的畫布

12-1-1 Graphics繪圖類別-取得Graphics繪圖類別 在Java Applet程式範例已經說明過paint()方法繪出文字和簡單圖形,使用的是Graphics類別的方法。 在Java執行繪圖功能需要使用「圖形內容」(Graphics Contexts)的Graphics物件,繪製的文字、影像和圖形都是繪製在此畫布物件上,如同將GUI元件新增到JFrame物件的ContentPane物件一般。

12-1-1 Graphics繪圖類別-paint()方法 繼承自Component元件的paint()方法在呼叫時,其傳入參數就是Graphics物件,如下所示: public void paint(Graphics g) { ……… } 在上述的paint()方法呼叫繪圖方法,就可以在元件上繪出圖形。

12-1-1 Graphics繪圖類別-getGraphics()方法 在paint()方法之外的其它方法執行繪圖,可以使用getGraphics()方法取得元件的Graphics物件,如下所示: Graphics g = app.getGraphics(); 上述程式碼取得app元件的Graphics物件,接著就可以呼叫繪圖方法在元件上繪出圖形。

12-1-1 Graphics繪圖類別-Swing的paintComponent()方法 對於繼承自Swing元件的類別。例如:JPanel建立的畫布時,繪圖方法的程式碼是位於覆寫的paintComponent()方法,如下所示: class UserPanel extends JPanel { // 建構子 public UserPanel() { ……… } public void paintComponent(Graphics g) }

12-1-1 Graphics繪圖類別-再談paint()和repaint()方法 Swing元件屬於JComponent的子類別,同時繼承Component的paint()和repaint()方法,因為元件繪圖操作大都是呼叫paint()方法完成,paint()方法非常總明,能夠在使用者調整視窗尺寸(例如:縮小和放大元件的視窗)等操作後,或是執行setText()等方法改變元件內容時,自動重新呼叫repaint()方法重繪調整後的圖形和元件。

12-1-2 座標系統與JComponent元件-說明 電腦螢幕的座標系統是使用「像素」(Pixels)為單位,Graphics物件的畫布是一張長方形區域,左上角為原點,其座標是(0, 0),X軸從左到右,Y軸由上到下,如下圖所示:

12-1-2 座標系統與JComponent元件-取得尺寸 座標系統可以使用JComponent元件的getWidth()、getHeight()方法取得元件的寬和高,因為元件的四周預設有邊線,所以需要使用getInsets()取得邊線left、right、top和bottom的尺寸,如下所示: Insets ins = getInsets(); int width = getWidth() - (ins.left + ins.right); int height = getHeight() - (ins.top + ins.bottom);

12-1-3 JFrame類別的畫布-說明 Java應用程式可以將整個JFrame視窗或某個Swing元件作為畫布,如果是JFrame畫布,只需在paint()方法撰寫繪圖方法的程式碼,就可以在視窗繪出所需圖形。

12-1-3 JFrame類別的畫布-繪圖 如果不是在paint()方法,Java程式碼需要使用getGraphics()方法取得Grphics物件後,在Graphics物件繪出所需圖形,如下所示: Graphics g = app.getGraphics(); g.setColor(Color.green); g.fillOval(100, 100, 40, 40);

12-1-4 JPanel類別的畫布 Swing的JPanel元件可以取代AWT的Canvas類別畫布,JPanel預設提供「雙緩衝區」(Double Buffering)繪圖功能,所有元件的繪圖都是在幕後完成後,才會一次顯示到螢幕上,所以可以加速圖形的顯示。

12-2 Graphics類別的色彩、文字與繪圖 12-2-1 指定色彩 12-2-2 指定字型 12-2-3 字型定位尺寸FontMetrics 12-2-4 圖形和字串的繪圖方法 12-2-5 填滿圖形的繪圖方法

12-2-1 指定色彩-建立Color物件 Java色彩是java.awt.Color的Color物件,這是使用RGB色彩以不同程度的紅、綠和藍3原色混合出的Color色彩物件,如下所示: Color myColor = new Color(r, g, b); 上述參數r、g和b如為int整數,其範圍是0~255,如為float是0.0~1.0。

12-2-1 指定色彩-指定色彩方法 在建立好Color物件後,可以使用Graphics類別的方法指定色彩,相關方法如下表所示:

12-2-2 指定字型-建立Font物件 Java的字型是java.awt.Font的Font物件,這是代表指定尺寸和樣式的字型,如下所示: Folot myFont = new Font("新細明體", Font.PLAIN, 30); 上述參數分別是字型名稱、樣式和尺寸。

12-2-2 指定字型-指定字型方法 在建立好Font物件後,可以使用Graphics類別的方法指定字型,相關方法如下表所示:

12-2-3 字型定位尺寸FontMetrics-說明

12-2-3 字型定位尺寸FontMetrics-相關方法

12-2-4 圖形和字串的繪圖方法-1 Graphics類別提供多種方法可以繪出線條、長方形、圓邊長方形、圓形或橢圓形,如下表所示:

12-2-4 圖形和字串的繪圖方法-2

12-2-4 圖形和字串的繪圖方法-3

12-2-5 填滿圖形的繪圖方法-1 Graphics類別還提供繪出填滿圖形的相關方法,如下表所示:

12-2-5 填滿圖形的繪圖方法-2

12-2-5 填滿圖形的繪圖方法-3

12-3 圖片的載入與顯示 12-3-1 圖片的載入與顯示 12-3-2 調整圖片尺寸

12-3-1 圖片的載入與顯示-說明 Java程式是使用Image物件來載入圖片,Image是抽象類別,其繼承的子類別可以儲存多種格式的圖片檔案。 在使用上是以Toolkit抽象類別(Abstract Window Toolkit實作的抽象類別)的方法將圖檔載入成為Image物件。

12-3-1 圖片的載入與顯示-載入 首先使用getDefaultToolkit()取得Toolkit物件,如下所示: Toolkit toolkit = Toolkit.getDefaultToolkit(); 程式碼在取得Toolkit物件toolkit後,使用getImage()方法載入圖檔,例如:取得JPG圖檔sample.jpg的Image物件,其程式碼如下所示: Image image = toolkit.getImage("sample.jpg");

12-3-1 圖片的載入與顯示-顯示 在paint()或paintComponent()方法使用drawImage()顯示圖檔的Image物件,如下所示: g.drawImage(image, 5, 5, this); 程式碼是在座標(5, 5)顯示名為image的Image物件,實作ImageObserver介面的物件是元件本身this,因為繼承自Component類別的Swing元件都已經實作ImageObserver介面,所以使用元件本身即可。

12-3-1 圖片的載入與顯示-圖例

12-3-2 調整圖片尺寸-圖片的放大與縮小 drawImage()方法新增參數width和height,分別是圖片的寬和高,如果設定的尺寸比原圖形小是縮小圖片,反之就是放大圖片。 boolean drawImage(Image image, int x, int y, int width, int height, ImageObserver observer)

12-3-2 調整圖片尺寸-圖片的翻轉與剪裁 boolean drawImage(Image image, int x1, int y1, int x2, int y2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer) drawImage()方法參數的4個座標分成2組,其說明如下表所示:

12-3-2 調整圖片尺寸-圖片翻轉 首先來看翻轉圖片情況:如果sample.gif原始圖片尺寸的寬是width,高是height,原始圖片的左上角座標是(0, 0),右下角座標為(width, height),翻轉操作如下: 原尺寸上下翻轉:原始圖片座標分別為(0, height)和(width, 0),換句話說,原始圖片的左下角成為顯示圖片的左上角,而右上角成為右下角。 原尺寸左右翻轉:原始圖片座標分別為(width, 0)和(0, height),換句話說,原始圖片的右上角成為顯示圖片的左上角,而左下角成為右下角。

12-3-2 調整圖片尺寸-圖片的剪裁 翻轉與剪裁圖片是使用第2組座標,如果第2組座標的尺寸只有部分的圖片,就會剪裁圖片。

12-4 動畫效果 12-4-1 Timer類別的時間控制 12-4-2 圖片移動的動畫效果

12-4 動畫效果 動畫效果是使用卡通片的製作原理,快速顯示一張張靜態圖片,因為每張圖片擁有少許改變。例如:位移或尺寸,或定時在不同位置繪出圖形,在人類視覺殘留的情況下,就會產生動畫效果。

12-4-1 Timer類別的時間控制-說明 在Java程式建立動畫效果是使用Timer計時器類別控制繪圖或圖片顯示,Timer類別可以在間隔時間自動產生事件,以便指定傾聽者物件進行處理。Timer類別的建構子,如下表所示:

12-4-1 Timer類別的時間控制-使用 Timer類別的使用十分的簡單,只需先建立好Timer物件,如下所示: Timer timer = new Timer(300, this); 上述程式碼建立Timer物件且設定300毫秒間隔時間產生事件,傾聽者物件是本身,接著就可以呼叫下表Timer類別的方法啟動、重新啟動和停止計時器。

12-4-1 Timer類別的時間控制-方法1 呼叫下表Timer類別的方法啟動、重新啟動和停止計時器,如下表所示:

12-4-1 Timer類別的時間控制-方法2 Timer類別的其它相關方法,如下表所示:

12-4-2 圖片移動的動畫效果 在Java程式只需使用Timer類別配合圖片載入與顯示,就可以建立圖片移動橫跨螢幕的動畫效果。

12-5 Java Applet的圖片載入-Applet 在Java Applet程式載入和顯示圖片是使用getImage()方法將圖片載入成為Image物件,例如:建立URL物件來載入圖片,如下所示: Image image = getImage( new URL("http://www.company.com/sample.gif")); 使用getDocumentBase()或getCodeBase()方法取得檔案的URL位置,如下圖所示: Image image = getImage(getDocumentBase(),"sample.gif");

12-5 Java Applet的圖片載入-JApplet Java Applet繼承自JApplet可以使用Swing的ImageIcon物件來載入和顯示圖片。例如:使用ImageIcon載入Baby.jpg圖檔的程式碼,如下所示: ImageIcon image1 = new ImageIcon("Baby.jpg"); 在載入圖片成為ImageIcon物件後,就可以使用paintIcon()方法顯示圖片,如下所示: image1.paintIcon(this, g, 5, 5);

12-6 音樂的播放-說明 在Java Applet不只可以顯示圖片,還可以播放音樂檔案,目前支援的音樂檔案格式有au、aiff、wav、mid和rmf。

12-6 音樂的播放-載入 在Java API的java.applet.*套件的Applet類別提供getAudioClip()方法建立AudioClip物件載入音樂檔案,如下所示: AudioClip audio = getAudioClip(getDocumentBase(),"Microsoft.wav"); 程式碼建立AudioClip物件,參數為URL物件和音樂檔案名稱。

12-6 音樂的播放-播放 在建立好AudioClip物件後,就可以使用AudioClip介面的3個方法控制音樂的播放,如下表所示: