輕松學(xué)習E-Prime(三十三):Canvas Object *

這一節(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é)習難度等原因键畴,這里不一一做介紹。有興趣的話請大家自己打開幫助文檔查看突雪,每個條目里都有示例代碼。


Canvas的屬性

假設(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掌逛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子司倚,更是在濱河造成了極大的恐慌豆混,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件动知,死亡現(xiàn)場離奇詭異皿伺,居然都是意外死亡,警方通過查閱死者的電腦和手機盒粮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門鸵鸥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人丹皱,你說我怎么就攤上這事妒穴。” “怎么了摊崭?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵讼油,是天一觀的道長。 經(jīng)常有香客問我呢簸,道長矮台,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任根时,我火速辦了婚禮瘦赫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蛤迎。我一直安慰自己确虱,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布忘苛。 她就那樣靜靜地躺著蝉娜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扎唾。 梳的紋絲不亂的頭發(fā)上召川,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音胸遇,去河邊找鬼荧呐。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的倍阐。 我是一名探鬼主播概疆,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼峰搪!你這毒婦竟也來了岔冀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤概耻,失蹤者是張志新(化名)和其女友劉穎使套,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鞠柄,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡侦高,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了厌杜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奉呛。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖夯尽,靈堂內(nèi)的尸體忽然破棺而出瞧壮,到底是詐尸還是另有隱情,我是刑警寧澤呐萌,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布馁痴,位于F島的核電站,受9級特大地震影響肺孤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜济欢,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一赠堵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧法褥,春花似錦茫叭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至杀饵,卻和暖如春莽囤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背切距。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工朽缎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓话肖,卻偏偏與公主長得像北秽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子最筒,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355