這一節(jié)不太重要,但是很有趣屡限,算是給您放松用的品嚣。Canvas能實現(xiàn)一些很特殊的功能,Canvas意思是畫布钧大,Canvas Object允許你在屏幕上畫圖翰撑,如畫矩形、圓形啊央、或者顯示文字眶诈。。假設(shè)你想用E-Prime制作游戲的話瓜饥,最好知道怎么用Canvas逝撬。
為了看到它的作用,首先您得像我這么做乓土,先像我如此安排樹狀圖里的內(nèi)容:
沒錯宪潮,就這么簡單,一個Inline就夠了趣苏。然后輸入下面的代碼:
Dim cnvs As Canvas
Set cnvs = Display.Canvas
Dim x, y, w, h As Integer
h = 100
w = 200
x = 100
y = 100
cnvs.Rectangle x, y, w, h
Sleep 3000
運行狡相,沒錯,就這樣運行食磕。這樣尽棕,你就會看到我們在屏幕x為100,y為100的地方畫了一個矩形(注意一下彬伦,顯示器x軸正方向向右滔悉,y軸正方向向下)伊诵,它高為100,寬為200回官。沒錯曹宴,就是我們上面設(shè)置的數(shù)值。
現(xiàn)在我解釋一下上面的代碼孙乖,它們的意思是:
定義一個名叫cnvs的Canvas的實例浙炼;
設(shè)置它為Display(也就是我們的顯示器份氧,默認名字Display唯袄,除非你有多個顯示器,否則一般不改動)這個顯示器的Canvas蜗帜;(記得Canvas意為畫布)
設(shè)置四個整數(shù)x,y,w,h恋拷,下面四行給它們相應(yīng)賦值;
畫一個矩形厅缺,位置在x,y蔬顾,寬為w,高為h湘捎;(這四個字母是代表我們剛才剛定義的四個整數(shù)的變量名诀豁,. Rectangle表示畫矩形,你可以看看后面的代碼窥妇,像.Pie舷胜,就表示畫扇形)
等待3000ms。(Sleep的作用是等待活翩,如果沒有這句烹骨,我們就沒法看到結(jié)果)
不知您理解了沒有,如果沒有理解材泄,試著修改x,y,w,h的值沮焕,這樣就能幫助您理解。
上面的代碼也可以替換成如下的這段:
Dim cnvs As Canvas
Set cnvs = Display.Canvas
cnvs.Rectangle 100, 100, 200, 100
Sleep 3000
效果是完全一樣的拉宗。
注意一下峦树,Rectangle后面的四個參數(shù)(理解成數(shù)字就好)一定是按格式的,它們分別代表x軸位置旦事,y軸位置魁巩,寬,高族檬,你只能輸入歪赢,不能隨意調(diào)換位置。
當然单料,我也可以改變其邊框顏色埋凯,或者填充顏色点楼。例如,我們這樣修改:
Dim cnvs As Canvas
Set cnvs = Display.Canvas
Dim x, y, w, h As Integer
h = 100
w = 200
x = Display.XRes/2-w/2
y = Display.YRes/2-h/2
cnvs.FillColor = CColor("yellow")
cnvs.PenColor = CColor("green")
cnvs.PenWidth = "10"
cnvs.Rectangle x, y, w, h
Sleep 3000
這樣白对,就會在屏幕正中央呈現(xiàn)一個矩形掠廓,填充顏色是黃色,邊框顏色是黃色甩恼。
語句中蟀瞧,Display.XRes和Display.YRes的作用是獲取顯示屏的寬度和高度。一個矩形的x軸位置在顯示器的寬度的二分之一条摸,減去w(其寬度)的二分之一悦污;y軸位置在顯示器的高度的二分之一,減去h(其高度)的二分之一钉蒲。那么這個矩形就能正好呈現(xiàn)在屏幕正中央切端。
而FillColor決定了矩形的填充色,PenColor決定了矩形的邊框色顷啼,PenWidth決定了矩形邊框的寬度踏枣。您不妨試著修改FillColor為”red”,PenColor為”black”钙蒙,PenWidth為20茵瀑,看看有什么不同,這樣能方便您理解躬厌。顏色還可以用RGB值來表示马昨,如CColor("0,255,0")代表綠色。里面的三個數(shù)值就是對應(yīng)RGB值烤咧。
當然偏陪,我們也可以畫圓形甚至扇形,比如你現(xiàn)在再試試下面這段:
Dim cnvs As Canvas
Set cnvs = Display.Canvas
Dim r, startAngle, endAngle As Integer
r = 50
startAngle = 25
endAngle = 60
cnvs.PenWidth = "4"
cnvs.Pie Display.XRes/2, Display.YRes/2, r, startAngle, endAngle
Sleep 3000
其中的startAngle決定了扇形起始角度煮嫌,endAngle決定了終止角度笛谦,r代表的是半徑。同樣昌阿,Pie后面的五個參數(shù)也是固定位置的饥脑,分別代表x軸位置,y軸位置懦冰,半徑灶轰,起始角度,終止角度刷钢。
如果您打算畫圓形笋颤,startAngle設(shè)為0,endAngle設(shè)為360就好了。當然伴澄,這會存在一個問題赋除,有一個黑色的線段在角度為0的位置。
其實非凌,畫圓形的話E-Prime有其專門的方法举农,如下面是其例子:
Dim cnvs As Canvas
Set cnvs = Display.Canvas
Dim rad As Integer
rad = 150
cnvs.PenWidth = 5
cnvs.PenColor = CColor("0,255,0")
cnvs.Circle Display.XRes/2, Display.YRes/2, rad
Sleep 3000
還可以顯示字,如下面的例子:
Dim cnvs As Canvas
Set cnvs = Display.Canvas
cnvs.TextBackColor = CColor ("red")
cnvs.TextColor = CColor ("blue")
cnvs.Text Display.XRes/2, Display.YRes/2, "Get Ready!"
Sleep 3000
除此之外敞嗡,還有很多很多的功能颁糟,比如畫線、通過MoveTo和LineTo勾勒特殊圖形喉悴、通過Polygon和數(shù)組來畫多邊形棱貌、保存或顯示圖片等等等等。由于數(shù)量多粥惧,學(xué)習難度等原因键畴,這里不一一做介紹。有興趣的話請大家自己打開幫助文檔查看突雪,每個條目里都有示例代碼。
假設(shè)能學(xué)好這個涡贱,那幾乎可以替代ImageDisplay和TextDisplay了咏删。
如果您試圖把這一節(jié)學(xué)到的東西用在ImageDisplay和TextDisplay上,就要設(shè)置ImageDisplay和TextDisplay的Duration為較低的數(shù)值问词,按鍵中的Limit Time則較高督函,Clear After一定不要勾選(設(shè)置為No)。因為我在【輕松學(xué)習E-Prime(二十):Clear After激挪,Echo這一切暗示了什么辰狡?】這一節(jié)說過,各個Display實際上是一塊一塊的東西垄分,它們會相互覆蓋宛篇。Clear After決定了它們在呈現(xiàn)后是否清除前面的內(nèi)容。
可以查看“示例程序3-13”薄湿,然后試著修改上面我說過的東西叫倍,試著自己去嘗試發(fā)現(xiàn)。由于Canvas里的內(nèi)容至少在福師大本科階段乃至研究生階段的實驗中本身極少用到豺瘤,(實際上從來就不會用到)我也不打算詳細說明吆倦。不過可以說,Canvas的功能是非常強大的坐求,如果能學(xué)會蚕泽,是很不錯的一件事。
在本教程的示例文件中桥嗤,包含一個槍戰(zhàn)游戲须妻,就用上了Canvas派任。
此為開源免費教程。教程所用資源等請訪問目錄或?qū)n}璧南,或者Github頁面:
http://www.reibang.com/p/5bbf1c274370
https://github.com/zkx654321/Learn-E-Prime-Easily