14 繪圖與動畫 [我的小畫家][打磚塊遊戲] 14-1 繪圖的基礎 14-2 滑鼠事件與基本繪圖 14-3 在Bitmap物件繪圖

Slides:



Advertisements
Similar presentations
計算機程式及實習 Computer Program Design and Experiment) 期末報告 ppt 南台科技大學機械工程系 姓名 : 蔡中銘 學號 :4A 授課老師 : 謝慶存大帥哥.
Advertisements

視窗應用程式表單的基本輸出入 資管系 助理教授 詹曉苓.
題目:徽章之記憶 南台科技大學 機械系 車輛一乙 學號:4A 姓名:黃冠嘉 教師:謝慶存
計算機程式及實習 期末報告 題目:超級猜一猜
第二章 VB的编程机制 【授课时间】第3周,第2次课 【授课题目】 2.1 面向对象程序设计概述 2.2 VB中的对象
計算機程式及實習 期末報告 題目:商店結帳系統
第10章 处理图形 Visual Basic 程序设计教程.
ooxx這個遊戲程式,非常的簡單只要你小時候會玩井字遊戲即可把電腦打敗,可以說是一種考智力取勝的遊戲。
第 9 章 表单控件的使用 本章提要:VFP表单控件工具栏上的21个基类控件及表单集,它们的常用属性、方法、事件及主要功能等。为叙述的方便,将VFP的基类控件及表单集按主要功能分为五类: 1.输出类:标签、图像、线条、形状。 2.输入类:文本框、编辑框、微调控件、列表框、组合框。 3.控制类:命令按钮、命令按钮组、复选框、选项按钮组、计时器。
課程名稱:程式設計 授課老師:________
南台科技大學 機械工程系 車輛一甲 學號:4A 學生:黃信成 老師:謝慶存
Visual Basic 2005學習範本 第5章 選擇結構.
1.了解VB6.0的功能特点 、集成环境。 2.理解面向对象程序设计的几个概念。 3.掌握VB应用程序设计的步骤。
项目:贪吃蛇游戏设计 工作任务一:系统设计(system design) 工作任务二:豆类(Bean)设计
CH09.
第十八章 图形和多媒体.
6.1VB.net概述 6.2初学者工具包 6.3图形图像处理 6.4声音及视频处理
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
Visual Basic 6.0之事件 事件(Event)?
題目:台灣客運 南臺科技大學 機械工程系 班級:奈米一乙 學號:4A 姓名:蔡政堯 授課教師:謝慶存
CH10.
程式簡介、VB、物件導向 國立北門高中 林明璋.
第 11 章 繪圖與多媒體.
第九章 常用控制項(ㄧ) 資訊教育研究室 編著 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
CH11.
課程名稱:程式設計 授課老師:________
第2章 建立Visual Basic應用程式.
第10章 图 形 基 础 10.1 坐标系 10.2 绘图属性 10.3 图形控件 10.4 图形方法 习题十.
第二章 Visual Basic语言基础.
程式語言 -Visual Basic 變數、常數與資料型態.
项目五 窗体上绘图 任务列表: 1、在窗体上绘制各种基本图形 2、在窗体上绘制文本.
C#图形程序设计基础 1 GDI+绘图基础 2 基本图形的绘制 3 实用图形程序设计.
Windows 程式設計 (使用 C++ / C#)
第18章 B4J的跨平台應用程式開發 18-1 B4J的GUI設計工具與介面控制項 18-2 使用B4J的介面控制項
Visual Basic程序设计 第八章 过程 -子程序和函数
初识Visual Basic.
C#程序设计 c# programming GDI+绘图 C#程序设计课程组.
Visual Basic程序设计基础 计算机科学学院.
第4章 視窗應用程式的基本輸出入 4-1 物件基礎程式設計 4-2 表單控制項 4-3 按鈕控制項 4-4 資料輸出的標籤控制項
計算機程式 廖文淵 Department of Computer Science and Engineering
Visual Basic 程序设计 教师:王 杨 电话:
第五章 Windows窗体界面设计 5.1 鼠标事件与键盘事件 5.2 Windows窗体基本控件 5.3 菜单与工具栏
form1 卡拉OK pictureBox1 fish1.bmp pictureBox2 fish2.bmp label1 卡拉OK字幕機
程式設計 Visual Basic簡介 週次:1 建國技術學院 資管系 饒瑞佶 2003年9月17日.
Windows Form绘图类及其简介.
第12章 繪圖與多媒體 12-1 繪圖的基礎 12-2 繪出文字和圖形 12-3 載入與顯示圖形檔案 12-4 建立多媒體的動畫效果
Ch03 基本輸出入介面設計 視窗程式設計 授課教師:王大瑾.
广州市教育局教学研究室编写的 初中《信息技术》第二册第二章 《程序设计初步》
高等学校计算机基础教育教材 Visual Basic 6.0 程序设计 上海中医药大学现代教育技术中心 计算机教学部 1.
第二章 创建用户界面 本章重点和难点 2.1 基本属性 2.2 创建窗体 2.3 Visual Basic的常用控件 2.4 制作菜单.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
Visual Basic.NET 程序设计语言课程内容
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
第4章 視窗應用程式的基本輸出入 4-1 物件基礎程式設計 4-2 表單控制項 4-3 按鈕控制項 4-4 資料輸出的標籤控制項
題目:南台飲料店結帳系統 南台科技大學 機械工程系 車輛一甲 學號:4A
VB程序设计语言 主讲教师:王 杨.
第6章 GDI+编程 GDI+ 已完全替代 GDI,以图形图像作为对象,可在 Windows 窗体应用程序中以编程方式绘制或操作图形图像。虽然无法对 Web 窗体直接使用 GDI+,但可以通过 Web 服务器的“图像”(Image) 控件显示图形图像。 处理图像图形包括创建 Graphics 对象,使用.
VB语言程序设计教程.
計算機程式及實習 Computer Program Design and Experiment) 期末報告ppt製作 南台科技大學 機械工程系 題目:南台電影城結帳系統 班級 : 車輛一甲 學號 : 4A 授教學生: 阮偉倫 授課老師: 謝慶存.
程序基础 2019/4/25.
第 12 章 視窗介面進階.
第 11 章 功能表列與工具列的設計 & 第 10 章 檔案.
計算機程式及實習 Computer Program Design and Experiment) 期末報告ppt製作
选择结构设计 第 4 章 程序流程有三种最基本的控制结构,即顺序结构、选择结构和循环结构。
程式設計 Visual Basic簡介 週次:4 建國技術學院 資管系 饒瑞佶 2003年10月18日.
Print方法和函数 2019/5/19.
Visual C# 程序设计 第1章 Visual C#概述 第2章 C#语法基础 第3章 顺序结构程序设计 第4章 选择结构程序设计
程式設計 Visual Basic簡介 週次:4 建國技術學院 資管系 饒瑞佶 2003年11月1日.
解析算法与枚举算法.
MenuStrip by Szeto CY Visual C# 2008.
Presentation transcript:

14 繪圖與動畫 [我的小畫家][打磚塊遊戲] 14-1 繪圖的基礎 14-2 滑鼠事件與基本繪圖 14-3 在Bitmap物件繪圖 14-4 更多的繪圖方法 14-5 圖檔的載入與顯示 14-6 動畫

14-1 繪圖的基礎 14-1-1 繪圖的座標 14-1-2 建立畫布 14-1-3 畫筆和筆刷

14-1-1 繪圖的座標-說明 在電腦螢幕的座標系統是以「像素」(Pixels)為單位,表單顯示區域或控制項建立的畫布是一張長方形區域,其左上角為原點,座標是(0, 0),X軸從左到右;Y軸由上到下,如下圖所示:

14-1-1 繪圖的座標-畫布尺寸 我們可以使用Size.Width和Size.Height屬性取得寬度與高度的尺寸。 因為表單擁有標題列、功能表列、狀態列和框線寬度,在中間的灰白區域才是實際顯示區域,我們可以使用ClientSize.Width與ClientSize.Height屬性取得其寬度和高度的尺寸。

14-1-2 建立畫布-說明 Windows作業系統處理繪圖的介面稱為「GDI」(Graphical Device Interface),Visual Basic繪圖功能是透過Graphics物件來使用GDI,換句話說,當在表單或控制項建立Graphics物件後,就可以將表單或控制項轉換成畫布,讓我們在畫布上繪圖。 在表單或控制項建立Graphics物件的方法有兩種:一是使用Paint事件;一是使用CreateGraphics()方法建立Graphics物件。

14-1-2 建立畫布- 建立Paint事件的畫布 在表單或控制項上繪圖時,就會觸發Paint事件,在Paint事件處理程序的PaintEventArgs參數可以取得Graphics物件。例如:表單Form1的Paint事件處理程序,如下所示: Private Sub Form1_Paint(…) … Dim g As Graphics = e.Graphics g.Clear(Color.Blue) ‘ 繪圖方法的程式碼 ……… End Sub

14-1-2 建立畫布- 使用CreateGraphics()方法建立畫布 如果沒有使用Paint事件處理程序,我們可以在其他事件處理程序使用CreateGraphics()方法來建立Graphics物件。例如:表單Form1的Click事件處理程序,如下所示: Private Sub Form1_Click(…) … Dim g As Graphics = Me.CreateGraphics() g.Clear(Color.Red) ‘ 繪圖方法的程式碼 ……… End Sub

14-1-2 建立畫布-範例專案 範例專案:Ch14-1-2\我的小畫家 在Windows應用程式的表單建立多種不同背景色彩的畫布,以便在本章後使用繪圖方法在其上繪出圖形,其執行結果如下圖所示:

14-1-3 畫筆和筆刷-說明 在Visual Basic表單或控制項建立好畫布後,開始繪圖前,我們需要一些繪圖工具來繪出圖形,相關物件與結構的說明,如下表所示:

14-1-3 畫筆和筆刷-Color結構 在程式碼指定控制項色彩是使用Color結構的屬性,如下所示: lblOutput.BackColor = Color.White 程式碼指定lblOutput控制項的背景色彩BackColor屬性為白色。不是常用色彩可以使用Color結構的FromArgb()方法,以RGB三原色的比例值來指定色彩,如下所示: lblOutput.ForeColor = Color.FromArgb(255, 0, 0) 3個參數依序是紅、綠和藍三原色的比例值,值的範圍是0~255。

14-1-3 畫筆和筆刷-Font物件 字型就是Font類別的物件,在程式碼需要使用New運算子建立Font物件,如下所示: lblOutput.Font = New Font("細明體", 16, _ FontStyle.Bold) 程式碼建立Font物件指定為控制項的Font屬性,使用的是Font類別的建構子,其參數依序是字型名稱、字型尺寸和樣式,樣式是使用FontStyle列舉常數。

14-1-3 畫筆和筆刷-畫筆Pen物件 畫筆Pen物件也是使用New關鍵字來建立,如下所示: Dim pen As Pen = New Pen(Color.Red, 1) 程式碼建立寬度為1,色彩為紅色的畫筆,建構子的第1個參數是畫筆色彩,第2個參數是寬度。 在建立Pen物件後,可以在程式碼使用Color和Width屬性更改畫筆的色彩與寬度,如下所示: pen.Width = 3 pen.Color = Color.Green

14-1-3 畫筆和筆刷-筆刷Brush物件 筆刷可以填滿圖形或顯示文字,同樣的,Brush物件也需要使用New關鍵字來建立,如下所示: Dim brush1 As SolidBrush = _ New SolidBrush(Color.Blue) 程式碼建立藍色的SolidBrush筆刷,建構子參數是色彩Color結構。如果使用TextureBrush類別,可以使用圖檔來建立筆刷,如下所示: Dim brush2 As TextureBrush = _ New TextureBrush( New _ Bitmap(“C:\VB2010\Ch14\back.bmp"))

14-1-3 畫筆和筆刷-範例專案 範例專案:Ch14-1-3\我的小畫家 這個Windows應用程式是修改第14-1-2節的【我的小畫家】,新增功能表來選擇使用的畫筆和筆刷,可以使用選擇的畫筆和筆刷來繪出測試的直線和填滿的橢圓形,其執行結果如下圖所示:

14-2 滑鼠事件與基本繪圖-說明 Graphics物件提供繪圖方法來繪出文字與線條,我們可以配合滑鼠事件取得繪圖位置來繪出線條和文字內容。 常用的滑鼠事件有:MouseUp、MouseDown和MouseMove事件。

14-2 滑鼠事件與基本繪圖- MouseUp和MouseDown事件 MouseUp和MouseDown事件是當使用者按下滑鼠按鍵和放開時產生的事件。Visual Basic程式碼可以從事件處理程序參數e的MouseEventArgs物件取得使用者按下哪一個按鍵,和其座標位置。 MouseEventArgs物件常用屬性說明,如下表:

14-2 滑鼠事件與基本繪圖-MouseMove事件 在表單的MouseMove事件處理程序是使用MouseEventArgs的X和Y屬性來取得座標,然後使用本節後的DrawLine()方法繪出直線。

14-2 滑鼠事件與基本繪圖- 繪出文字和線條的方法 Graphics物件提供相關方法來繪出文字與線條,其說明如下表所示:

14-2 滑鼠事件與基本繪圖-範例專案 範例專案:Ch14-2\我的小畫家 這個Windows應用程式是修改第14-1-3節的【我的小畫家】,新增功能表來繪出線條和文字內容,程式只需使用滑鼠拖拉就可以繪出線條,按一下,可以在指定位置顯示文字內容,其執行結果如下圖所示:

14-3 在Bitmap物件繪圖-說明 在第14-2節的範例專案雖然可以繪出線條和文字內容,但是因為並不是在表單的Paint事件處理程序,所以並不會自動重繪,當切換視窗後,繪出的圖形就會自動清除。 為了解決此問題,我們可以使用Bitmap物件來建立畫布,然後在Bitmap物件上繪圖,換句話說,只需重新將Bitmap物件載入畫布,就可以保留我們繪出的圖形。

14-3 在Bitmap物件繪圖- 建立Bitmap物件 Bitmap物件的內容是儲存像素資料的圖檔影像,在程式碼需要使用New關鍵字來建立此物件,如下所示: Dim buffer As Bitmap = New Bitmap(320, 220) 程式碼中建構子的第1個參數是Bitmap物件的寬度(以像素為單位),第2個參數是Bitmap物件的高度,簡單的說,Bitmap物件是一個儲存在記憶體中,尺寸為320 X 220的圖檔。

14-3 在Bitmap物件繪圖- 使用Bitmap物件建立Graphics物件 我們可以使用Graphics物件方法來編輯Bitmap物件儲存的圖形,即在Graphics物件上繪製的圖形,實際是繪在Bitmap物件的的點陣圖上,如下所示: Dim g1 As Graphics = Graphics.FromImage(buffer) g1.Clear(Color.White) 程式碼使用Graphics類別的FromImage()方法將Bitmap物件buffer建立成Graphics物件,然後執行Clear()方法將Bitmap物件的點陣圖清除成白色。

14-3 在Bitmap物件繪圖- 在畫布顯示Bitmap物件 在表單或控制項畫布上顯示Bitmap物件是使用DrawImage()方法,如下所示: g.DrawImage(buffer, 0, 0) 上述程式碼可以將Bitmap物件buffer顯示在畫布座標(0, 0)。DrawImage()方法的說明,如下表所示:

14-3 在Bitmap物件繪圖-範例專案 範例專案:Ch14-3\我的小畫家 這個Windows應用程式是修改第14-2節的【我的小畫家】,改為使用Bitmap物件建立繪圖緩衝區,以便保留使用者在表單上繪出的圖形,其執行結果如下圖所示:

14-4 更多的繪圖方法 14-4-1 繪出長方形與橢圓形 14-4-2 繪出填滿圖形

14-4-1 繪出長方形與橢圓形-說明 Graphics物件提供繪出長方形與橢圓形的相關方法,其說明如下表所示:

14-4-1 繪出長方形與橢圓形- 範例專案 範例專案:Ch14-4-1\我的小畫家 這個Windows應用程式是修改第14-3節的【我的小畫家】,新增功能表的選項來繪出長方形與橢圓形,其執行結果如下圖所示:

14-4-2 繪出填滿圖形-說明 Graphics物件關於繪出填滿圖形的相關方法,其說明如下表所示:

14-4-2 繪出填滿圖形-範例專案 範例專案:Ch14-4-2\我的小畫家 這個Windows應用程式是修改第14-4-1節的【我的小畫家】,新增功能表的選項來切換是否繪出填滿的長方形與橢圓形,其執行結果如下圖所示:

14-5 圖檔的載入與顯示-說明 除了在畫布使用Graphics物件的方法來繪出圖形外,如果擁有BMP、GIF或JPG等格式的現成圖檔,我們也可以建立Windows應用程式,將圖檔載入和在畫布上顯示。 在Visual Basic應用程式載入和顯示圖片檔案的方法有很多種,這一節是使用Bitmap物件來載入圖片後,以DrawImage()方法顯示圖片;第15-1-1節是使用PictureBox圖片盒控制項來載入和顯示圖片檔案。

14-5 圖檔的載入與顯示- 使用Bitmap物件來載入圖片檔案 Dim bmp = New Bitmap(path & "sample.bmp") 建構子參數是圖片檔案的路徑字串,圖檔格式可以是BMP、GIF或JPG等。Bitmap物件的相關方法說明,如下表所示:

14-5 圖檔的載入與顯示- 在畫布顯示縮小圖片 在表單或控制項畫布使用DrawImage()方法顯示Bitmap物件時,可以指定尺寸,如果尺寸比原始尺寸小,就是顯示縮小圖片,如下所示: g.DrawImage(bmp, 1, 25, bmp.Width, bmp.Height + 25) DrawImage()方法的說明,如下表所示:

14-5 圖檔的載入與顯示- 範例專案 範例專案:Ch14-5\我的小畫家 這個Windows應用程式是修改第14-4-2節的【我的小畫家】,新增【檔案】功能表來載入與儲存圖片,換句話說,我們可以將繪圖結果儲存成圖檔,其執行結果如下圖所示:

14-6 動畫-說明 電腦動畫是使用卡通的製作原理,快速顯示一張張靜態圖形,因為每張圖形有少許的改變,例如:位移或尺寸,或定時在不同位置繪出圖形,在人類視覺殘留情況下,就可以看到多媒體的動畫效果。 打磚塊遊戲最早是一種電子遊戲機,玩家操作一根位在螢幕下方水平的棒子,以便讓一顆不斷彈來彈去的球(即動畫)撞擊目標來消除途中的磚塊,直到把磚塊全部消除為止。

14-6 動畫-計時器控制項(說明) 在Visual Basic建立動畫需要使用Timer計時器控制項來控制繪圖或圖形的顯示,Timer控制項可以在指定間隔時間自動產生事件,以便事件處理程序能夠重繪圖形來建立動畫。Timer控制項的常用屬性說明,如下表所示: 屬性 說明 Name 控制項名稱 Enabled 是否啟動計時器控制項,預設值False為不啟動;True為啟動 Interval 設定觸發Tick事件的間隔時間,預設值是100毫秒(10-3秒)

14-6 動畫-計時器控制項(Tick事件) Timer控制項的Tick事件是當Enabled屬性為True時,在Interval屬性的間隔時間到時,就會自動觸發此事件,如下所示: Private Sub Timer1_Tick(sender As Object, _ e As EventArgs) Handles Timer1.Tick … End Sub 上述Timer1_Tick()程序是Timer1的Tick事件處理程序,我們可以在此程序更改球的位置來建立移動球的動畫效果。

14-6 動畫-繪出球的Image物件 在本節範例專案打磚塊遊戲的球是一個Image物件,如下所示: Dim myBall As Image = Image.FromFile("..\..\ball.jpg") 上述程式碼呼叫FromFile()方法來載入ball.jpg圖檔成為Image物件,然後就可以呼叫DrawImage()方法繪出這顆球的圖形。

14-6 動畫- 使用程式碼建立磚塊的Label物件 打磚塊遊戲的磚塊是使用Label控制項建立,因為需要取得控制項物件來判斷是否位在球的路徑中,所以是使用程式碼建立40個Label物件,並且使用2個一維陣列來儲存物件參考和狀態,如下所示: Dim lblBricks(40) As Label Dim lblStatus(40) As Boolean … For i = 1 To 40 lblBricks(i) = New Label() lblBricks(i).BackColor = Color.Green lblBricks(i).Top = 50 + 22 * ((i - 1) \ 8) lblBricks(i).Left = (i Mod 8) * 62 + 6 lblBricks(i).Width = 59 lblBricks(i).Height = 19 lblBricks(i).Visible = True Me.Controls.Add(lblBricks(i)) lblStatus(i) = True Next

14-6 動畫-範例專案 範例專案:Ch14-6\打磚塊遊戲 在Windows應用程式建立打磚塊遊戲,遊戲介面擁有3個Label標籤和Button按鈕控制項,其中球和磚塊是動態使用程式碼來顯示的Image圖形和Label物件,其執行結果如右圖所示: