總的來說,這學期,這堂課,還是有學到東西嘛
買的課本淺顯易懂,講的雖然不會太深入,但是囊括現今的多媒體都有介紹到
對多媒體的瞭解多了一些,這樣講是有點空泛
因為我很沒有感想的把整本書看完了
其中印象比較深刻的是網路影音串流技術,
算是書中的內容裡有研究過的部份
上課內容,好像只有出程式作業的時候才會提起興趣來
寫了一個遊戲,也學會了一些影像的處理方式
感覺還不錯
會使用BCB,至少以後程式作業可以不用只交DOS視窗了
只可惜網路上的相關資料太少、
大部份教學書籍的內容也不深,Windows API 也都沒怎麼提到
要熟悉應用BCB的程式指令會需要一段相當的時間
評分
出席 20 % 20
作業 20% 15
上課參與 40% 25
自我評量 20% 15
───────
75
+ 9 (教授說要加的,9為亂數
───────
84
2008年1月3日 星期四
Week 15: Salt and Pepper
2007年12月17日 星期一
2007年11月29日 星期四
這是 week9 的作業,還是 week11 ??
1. 8-puzzle 程式撰寫討論
這個... 該討論什麼,不知道 O_O
2. Honda 程式講解: 寶石方塊
聽完學長講解完後有抓到一點我要的資訊,不過後來要準備中考所以沒時間消化
現在也不知道還記得多少
還有就是,使用 Timer 元件去隨時做判斷的動作,會造成整個程式的 delay
就一個遊戲來講,這是不應該有的
應該還是要在 click 之後才去呼叫判斷的事件
我是這麼認為
3. 指定閱讀(一): Chapter 7 串流多媒體
初次聽到串流技術,就我自己的想像,
是除了傳送中的檔案,另外還有一個檔案去紀錄目前下載到哪裡(a點),
如果有中斷就從(a點)繼續傳送資料
這其實是一個很粗糙的概念,不過畢竟只是我的想像
多媒體串流的架構,主要包含幾個模組:
1.壓縮 2.串流伺服器 3.播放器
壓縮模組主要的功能,是將龐大的多媒體資料壓縮成能在網路上傳送的大小。
壓縮的功能越強,串流的效果就越好。
壓縮模組應該算是整個多媒體串流系統中的引擎。
它也必須負責將壓縮後的多媒體資料切割成網路封包的形式,以便於在網路上傳送。
串流伺服器主要功能就是提供串流的建立、管理與傳送服務。
播放器則負責接收與重組封包、解壓縮以及同步展現多媒體資料。
看完這段對於串流技術的簡介,
才知道為什麼指定閱讀 ( Joost 那篇 ) 中會提到
如果 Adobe 將 H.264 的壓縮規格納入 Flash Player 之中,
可以大幅提升串流視訊的品質
4. 指定閱讀(二): 數位時代雜誌 < Joost 的危機 >
文章內容大概是在講 串流技術的提升,會提升線上隨選視訊的品質,
加強 Joost 的競爭對手的實力
而 Erick 認為 Joost 掌握著先驅者的優勢,應該朝整合性服務發展,
而不是一昧的只著眼於串流品質的提升
看完後感覺沒什麼問題,多認識了串流技術、Joost 是什麼
比較有感觸的就是技術的掌握若能成為業界標準(或者說是期待),
如 Adobe 的 Flash Player 壓縮規格等,
在很多時候可以左右該技術相關領域的發展
感覺像是某種權力的掌握,變相的影響、控制全球的發展腳步
期中報告
a.自己在本課程前半學期的學習情形:
學習情形哦 ... 剛開始上課是"躍躍欲試",後來是"每況愈下"
看課本可以得知很多數位媒體的相關資訊,
平常使用眾多的多媒體軟體跟本就不會想到這麼多
雖然更多的是知道了一堆不認識的專有名詞,
照我自己的話講,就是"知道的越多反而不瞭解的東西越多"
因為數位媒體概論本就是因應課表而選的課,
當初有沒有興趣也不知道就選了
課程中只要閱讀指定文章、每個星期提問題就能取得分數
一開始覺得很新鮮,但是久了就厭倦了這種"為了分數找問題",
類似於"為了升學去上課"的模式
所以後來雖然還有繼續做指定閱讀的功課,但是就懶得問問題了
因為如果是"非直覺性的聯想到問題",而是"攪盡腦汁從隻字片語裡挖題目",
感覺效果就會差很多
不是自己迫切可望得知解答的問題,問完後就不會去理了,
那還不如把浪費在"找問題"上的時間拿去做別的事
不過講真格的,我都拿去用在"非課業"的事情上了 ... 還是一樣在浪費 囧rz
以上是在講關於課前準備的東西,至於上課時,
教授的互動式問答上課方式,有別於傳統的"我教什麼你聽甚麼",
會讓人有耳目一新的感覺,但是其最大成效建立在"學生有用心做課前準備"上,
我想還是很不適合我 ...
習慣的改變不是一天兩天的事,真的每堂課前都會用心預習,那就發達啦!!
後來花在講解程式的時間漸增,感覺變成程式設計課了
這部份跟某某某後來跟我 complain 的東西有同感
不諱言,這樣上課我會想趴著睡覺,所以才在上課玩小遊戲提神!!
( 藉口合理化 ??? )
b.回顧自己哪方面表現不錯
好像 ... 沒有吧,也許部份的人會認為我在寫程式方面比較突出
那也只是好死不死我有興趣在這部份而已,
所以其實不算有什麼好的表現
( 可憐我的微積分因為沒興趣被當了 ... )
c.哪方面需要加強
需要加強 ... 我覺得比較需要培養對多媒體領域的興趣
至少在概論這部份我覺得還算 soso
d.老師應加強哪些課程內容
不 知 道
傳統的教學方式會變成程式設計課、
問答式的教學在對該科有興趣的情況下才有用,所以目前還是覺得不適合
要加強什麼?? 無所適從的學生什麼意見都提不出來
總的來說,就是"不知道"三個字
e.最後, 給自己的學習打成績
打幾分都沒差,反正如果學期結束過了就是拿三學分
還是看看自己到底學了些什麼比較實在
雖然不是很想面對,不過事實上我覺得好像沒學到什麼
總結:沒興趣 (目前) + 半調子的學習態度 = 59.5
想想四捨五入還是給自己個60好了 ... 哈哈哈 =_=
這個... 該討論什麼,不知道 O_O
2. Honda 程式講解: 寶石方塊
聽完學長講解完後有抓到一點我要的資訊,不過後來要準備中考所以沒時間消化
現在也不知道還記得多少
還有就是,使用 Timer 元件去隨時做判斷的動作,會造成整個程式的 delay
就一個遊戲來講,這是不應該有的
應該還是要在 click 之後才去呼叫判斷的事件
我是這麼認為
3. 指定閱讀(一): Chapter 7 串流多媒體
初次聽到串流技術,就我自己的想像,
是除了傳送中的檔案,另外還有一個檔案去紀錄目前下載到哪裡(a點),
如果有中斷就從(a點)繼續傳送資料
這其實是一個很粗糙的概念,不過畢竟只是我的想像
多媒體串流的架構,主要包含幾個模組:
1.壓縮 2.串流伺服器 3.播放器
壓縮模組主要的功能,是將龐大的多媒體資料壓縮成能在網路上傳送的大小。
壓縮的功能越強,串流的效果就越好。
壓縮模組應該算是整個多媒體串流系統中的引擎。
它也必須負責將壓縮後的多媒體資料切割成網路封包的形式,以便於在網路上傳送。
串流伺服器主要功能就是提供串流的建立、管理與傳送服務。
播放器則負責接收與重組封包、解壓縮以及同步展現多媒體資料。
看完這段對於串流技術的簡介,
才知道為什麼指定閱讀 ( Joost 那篇 ) 中會提到
如果 Adobe 將 H.264 的壓縮規格納入 Flash Player 之中,
可以大幅提升串流視訊的品質
4. 指定閱讀(二): 數位時代雜誌 < Joost 的危機 >
文章內容大概是在講 串流技術的提升,會提升線上隨選視訊的品質,
加強 Joost 的競爭對手的實力
而 Erick 認為 Joost 掌握著先驅者的優勢,應該朝整合性服務發展,
而不是一昧的只著眼於串流品質的提升
看完後感覺沒什麼問題,多認識了串流技術、Joost 是什麼
比較有感觸的就是技術的掌握若能成為業界標準(或者說是期待),
如 Adobe 的 Flash Player 壓縮規格等,
在很多時候可以左右該技術相關領域的發展
感覺像是某種權力的掌握,變相的影響、控制全球的發展腳步
期中報告
a.自己在本課程前半學期的學習情形:
學習情形哦 ... 剛開始上課是"躍躍欲試",後來是"每況愈下"
看課本可以得知很多數位媒體的相關資訊,
平常使用眾多的多媒體軟體跟本就不會想到這麼多
雖然更多的是知道了一堆不認識的專有名詞,
照我自己的話講,就是"知道的越多反而不瞭解的東西越多"
因為數位媒體概論本就是因應課表而選的課,
當初有沒有興趣也不知道就選了
課程中只要閱讀指定文章、每個星期提問題就能取得分數
一開始覺得很新鮮,但是久了就厭倦了這種"為了分數找問題",
類似於"為了升學去上課"的模式
所以後來雖然還有繼續做指定閱讀的功課,但是就懶得問問題了
因為如果是"非直覺性的聯想到問題",而是"攪盡腦汁從隻字片語裡挖題目",
感覺效果就會差很多
不是自己迫切可望得知解答的問題,問完後就不會去理了,
那還不如把浪費在"找問題"上的時間拿去做別的事
不過講真格的,我都拿去用在"非課業"的事情上了 ... 還是一樣在浪費 囧rz
以上是在講關於課前準備的東西,至於上課時,
教授的互動式問答上課方式,有別於傳統的"我教什麼你聽甚麼",
會讓人有耳目一新的感覺,但是其最大成效建立在"學生有用心做課前準備"上,
我想還是很不適合我 ...
習慣的改變不是一天兩天的事,真的每堂課前都會用心預習,那就發達啦!!
後來花在講解程式的時間漸增,感覺變成程式設計課了
這部份跟某某某後來跟我 complain 的東西有同感
不諱言,這樣上課我會想趴著睡覺,所以才在上課玩小遊戲提神!!
( 藉口合理化 ??? )
b.回顧自己哪方面表現不錯
好像 ... 沒有吧,也許部份的人會認為我在寫程式方面比較突出
那也只是好死不死我有興趣在這部份而已,
所以其實不算有什麼好的表現
( 可憐我的微積分因為沒興趣被當了 ... )
c.哪方面需要加強
需要加強 ... 我覺得比較需要培養對多媒體領域的興趣
至少在概論這部份我覺得還算 soso
d.老師應加強哪些課程內容
不 知 道
傳統的教學方式會變成程式設計課、
問答式的教學在對該科有興趣的情況下才有用,所以目前還是覺得不適合
要加強什麼?? 無所適從的學生什麼意見都提不出來
總的來說,就是"不知道"三個字
e.最後, 給自己的學習打成績
打幾分都沒差,反正如果學期結束過了就是拿三學分
還是看看自己到底學了些什麼比較實在
雖然不是很想面對,不過事實上我覺得好像沒學到什麼
總結:沒興趣 (目前) + 半調子的學習態度 = 59.5
想想四捨五入還是給自己個60好了 ... 哈哈哈 =_=
2007年11月15日 星期四
哎啊 ...
<> 狀態顯示
放 Label 去改變 Caption 屬性的內容來顯示 1~9
每次移動 Image 後就進行一次 showLabel(int)
showLabel(int) 會把傳入參數的 Image 做更改 Caption 的動作
這樣顯示的數字就會變了

<> 搜尋路徑
如果要用樹的結構
我想到的是每個節點要有一個 item 用來紀錄空白 Image 的位置
然後每產生一個節點( 也就是移動一次 Image )
就做 Image1~9 的判斷,看是否都有擺對
可是這樣的演算法很糟,樹的深度可能會是很可怕的極大值
接著想到如果給每個 Image 都做一棵樹
先從 Image1 開始,用樹找出把 Image1 搬回位置 1 的最短路徑
然後再做 Image2 的樹找出把 Image2 搬回位置 2 的最短路徑
看起來越後面的 Image 樹的深度會越小,不過實際上這是不可行的方法
原因還滿多的 而且都很不好處理 ... ...
<> 遊戲初始打亂演算法
我是想用 for loop 去移動 Image9 n 次
跑多了總會亂掉
可是不知道要怎麼讓 Image9 繞回 8 puzzle 右下的位置
而參照 seles 發現的規則
就是等到 Image9 停在奇數格上時,再跟右下的圖片對掉就行了
放 Label 去改變 Caption 屬性的內容來顯示 1~9
每次移動 Image 後就進行一次 showLabel(int)
showLabel(int) 會把傳入參數的 Image 做更改 Caption 的動作
這樣顯示的數字就會變了

<> 搜尋路徑
如果要用樹的結構
我想到的是每個節點要有一個 item 用來紀錄空白 Image 的位置
然後每產生一個節點( 也就是移動一次 Image )
就做 Image1~9 的判斷,看是否都有擺對
可是這樣的演算法很糟,樹的深度可能會是很可怕的極大值
接著想到如果給每個 Image 都做一棵樹
先從 Image1 開始,用樹找出把 Image1 搬回位置 1 的最短路徑
然後再做 Image2 的樹找出把 Image2 搬回位置 2 的最短路徑
看起來越後面的 Image 樹的深度會越小,不過實際上這是不可行的方法
原因還滿多的 而且都很不好處理 ... ...
<> 遊戲初始打亂演算法
我是想用 for loop 去移動 Image9 n 次
跑多了總會亂掉
可是不知道要怎麼讓 Image9 繞回 8 puzzle 右下的位置
而參照 seles 發現的規則
就是等到 Image9 停在奇數格上時,再跟右下的圖片對掉就行了
2007年11月4日 星期日
8 Puzzle Game finished

【心得】
既然已經得到讓 Image 移動的方法,就可以把這個遊戲弄出來了!!
其實是因為根本就不知道作業要做到怎麼樣的程度,所以就一直寫下去
然後就...
其實程式碼本身很粗糙,而且沒有寫演算法就在 coding
總的來說,會覺得程式不好寫只是因為對 BCB 不熟
工具列、元件、函式、Windows API 都不知道有哪些
網路上跟 BCB 有關的教學又是少之又少 ="=
【Coding 實記】
1.
其實首先要解決的問題是,我的 8 puzzle 讀取的時候會缺左中和左下的圖
情況就跟 Shun 的一樣 ※連結過去
一開始我以為是讀取時座標的問題,可是怎麼算都對,所以我也不知所以然
就在程式裡面動點手腳才把星座圖九宮格弄出來 (偷吃步 XD)
重新從 for loop 計算後,
才發現少放了一行 rtOI = Rect(x,y,x+92,y+92)
所以左中和左下的圖才會沒有顯示出來
2.
確定九個小圖都可以讀出來後,先想到的是 8 puzzle 擺放的位置
一開始我是打算讓 Image 隨機讀取 8 個區塊
可是這樣做除了 CopyRect 要怎麼放 Image Title 的 (x,y) 很麻煩之外
在後面的程式裡,也不好紀錄 Image 移動後的位置
要改用別的方法,
一樣是讓 Image 照順序讀取 8 個區塊,然後讓 Image 隨機擺放
因為要紀錄 Image 的位置,所以我用了一個 LO[9] 的 int array ,
紀錄 Image 在 8 puzzle 的位置 0~8
以上圖來說 LO 的內容是這樣的 { 7 , 0 , 6 , 4 , 3 , 2 , 5 , 8 }
(搭配下一張圖看比較好懂)
這是表示 Image1 現在在 7 的位置,Image2 在 0 的位置,
其他依此類推
3.
因為要隨機擺放 Image ,用 (x,y) 座標來更動 Image 的 Top 和 Left 會比較好
所以再設一個 int array xyLO[9][2],用來紀錄 LO的 (x,y) 座標
上面的數字是 LO,下面的是 xyLO
以下的文章內容都會用 LO 表示 Image 所在的位置
LO[1] 這樣是表示 array 內的內容
所以我用 LO 1 來表示圖中 1 的位置 ( 上中 )
其他依此類推
再用 for loop 去跑
/* 重設 image 位置 */
int iX=328; // Image1 的 Left
int iY=40; // Image1 的 Top
int k=0;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
BMP[k]->Top = iY+xyLO[k][0]*96; // Image 的大小是 92*92
BMP[k]->Left = iX+xyLO[k][1]*96; // 再加上間隔距離所以是 96
k++;
}
}
當初就是這個部份沒有分清楚,
所以在測試的時候才會發生 Image 通通跑錯位置的烏龍
所以在測試的時候才會發生 Image 通通跑錯位置的烏龍
害我百思不得其解
4.
圖片的隨機放置完成後,再來是圖片的移動
這邊要考慮到的有
A.只有正中央 LO 4 的 Image 可以做四個方向的移動,
其他的 Image 可以移動的方向都有限制
比如 LO 0 ,只能做往右和往下的移動
B.要判斷 Image 9 是不是在被點擊的 Image 旁邊
比如 當我點 LO 7 的時候,要去找 Image9 有沒有在 LO 4、6、8 三個位置
C.找到 Image9 在被點擊圖片的旁邊後,要怎麼去做 Image 的互換
solve A:
我只想到用 switch 配上 if ,來做判斷
switch(i)
{
case 0:
{ ... } break;
case 1:
{ ... } break;
...
...
case 8:
{ ... } break;
}
solve B:
我用在 switch 裡的 if ,針對 Image9 的 Top 和 Left 屬性做判斷
ex:
case 2: // 被點擊的 Image 在 LO 2
{
// 判斷 Image9 在 LO 1
if(BMP[8]->Top==40 && BMP[8]->Left==424)
{ ... }
// 判斷 Image9 在 LO 5
else if(BMP[8]->Top==136 && BMP[8]->Left==520)
{ ... }
}
solve C:
直接去更動 Image(i) 和 Image9 的 Top 或 Left 屬性
ex:
case 2: // 若被點擊的 Image 在 LO 2
{
{
// 判斷 Image9 在 LO 1
if(BMP[8]->Top==40 && BMP[8]->Left==424)
{
if(BMP[8]->Top==40 && BMP[8]->Left==424)
{
BMP[i]->Left = 424; // 把 Image(i) 挪到 LO 1
BMP[8]->Left = 520; // 把 Image9 挪到 LO 2
LO[i] = 1; // Image(i) 改變位置了,LO[i] 裡面的資料也要跟著改
}
...
5.
確認所有圖片都可以正常移動後,就是要判斷過關的條件
只要用 for loop 去跑 LO array 裡面是不是從 0 排到 8 就可以了
6.
接著要製作執行檔
總不能叫沒有安裝 BCB 的人先裝 BCB 才能玩吧
這樣新產生的 exe 檔就可以拿去給別人玩了 XD
最下面還有更換 exe 檔的 Icon 的方法
BCB 內建的小圖... 不怎麼好看 = =a
【程式下載】
WebHd 群組: rome
網頁下載連結:
8 Puzzle Game (遊戲執行檔)
Image 移動 ( 含程式碼 )
Image 8 Puzzle 亂排 ( 含程式碼 )
下面兩個是有人問我要怎麼做才弄出來的
都弄好了就順便放上來分享
群組 rome 裡面都有,
附上網頁下載是因為最近網路硬碟還滿常掛的
2007年10月27日 星期六
CopyRect

老話一句,教授給出程式碼之後一切就都變得很簡單
但是在此之前卻會查資料查的半死,然後又沒甚麼收穫
最吐血的是家裡的vista不能看程式附的help檔,真是~!#$%^&*(_+
發個牢騷 = =a
【這堂課新學的指令】
Rect是一個特殊的數據結構,又是一個函數
他的作用就是定義一個矩形位址
Rect( 左上角x , 左上角y , 右下角x , 右下角y );
CopyRect 則是將一個Canvas(A)的矩形位址,'
複製到另一個Canvas(B)的矩形位址
CopyRect( B的矩形位址 , A的Canvas , A的矩形位址 );
【讓Image在程式一打開就有圖片】
點選一個Image,在屬性視窗裡,尋找 Picture ( Name 的下面第二個)
點進去後可以載入bmp 圖檔
只能載入 bmp 圖檔,雖然其他如 jpg 的圖也可以開啟,
但是會在CopyRect時發生錯誤
【其他1】 【 動態使用指定 Image 】
如果要像教授播放的範例一樣,弄出九宮格
那至少會有10個 Image ,一個來源圖片,九個空 Image
這樣的話,就要每個 Image 都設定一次
ex:
Image1:
int x=280,y=68;
TRect rtTile,rtOI;
rtTile = Rect(0,0,90,90);
rtOI = Rect(x,y,x+90,y+90);
Image1->Canvas->CopyRect(rtTile,Image1->Canvas,rtOI);
Image2:
int x=280,y=68;
TRect rtTile,rtOI;
rtTile = Rect(0,0,90,90);
rtOI = Rect(x,y,x+90,y+90);
Image2->Canvas->CopyRect(rtTile,Image1->Canvas,rtOI);
Image3:
...
...
...
...
9個 Image 就要設定9次,數量一多不就寫到死了
所以我就想,難道 Image 只能固定使用,不能用其他的變數替代嗎??
或是用陣列來設定 Image ??
然後開始上網翻資料
我找到的是使用 FindComponent 函數
使用方法如下:
(TImage*)FindComponent( "Image"+IntToStr( i ) )
(Timage*) 這個應該是元件type的宣告
( "Image"+IntToStr( i ) ) 這裡是 "元件名稱"+(編號)
((TImage*)FindComponent("Image"+IntToStr(1)))->Canvas
相等於 Image1->Canvas
這樣的話,要使用哪個 Image 就隨自己了
九個 Image 就可以只要更改 rtOI 的 x,y 坐標
int x=0,y=0;
TRect rtTile,rtOI;
rtTile = Rect(0,0,88,88);
rtOI = Rect(x,y,x+88,y+88);
for(int i=0;i<8;i+=3)
{
for(int j=i+1;j<i+4;j++)<>
{
((TImage*)FindComponent("Image"+IntToStr(j)))->Canvas->
CopyRect(rtTile,Image10->Canvas,rtOI);
x+=88;
rtOI = Rect(x,y,x+88,y+88);
}
x=0;
y+=88;
rtOI = Rect(x,y,x+92,y+92);
}
最後我發現!!
比起去想 for loop 裡面怎麼改 x,y 的座標
比起去想 for loop 裡面怎麼改 x,y 的座標
還不如複製貼上用個9次來的快 ...... XD
【其他2】 【 指定 Image 為陣列 】
懂了 FindComponent 怎麼用之後,就有更簡單的方法啦
先找個地方宣告 global 變數
Timage *BMP[9];
然後把下列程式碼放在 butten 裡面或隨便哪裡 看你想怎麼使用
for(int i=0;i<9;i++)
BMP[i]=(TImage*)FindComponent("Image"+IntToStr(i+1));
這樣一來,
Image1->Canvas 就可以替換成 BMP[0]->Canvas
Image2->Canvas 則可以替換成 BMP[1]->Canvas
...
...
依此類推
這樣上面po的程式碼又可以更簡潔易看了
int x=0,y=0;
TRect rtTile,rtOI;
rtTile = Rect(0,0,88,88);
rtOI = Rect(x,y,x+88,y+88);
int k=0;
for(int i=0;i<8;i+=3)
{
for(int j=i+1;j<i+4;j++)
{
BMP[k++]->Canvas->CopyRect(rtTile,Image10->Canvas,rtOI);
x+=88;
rtOI = Rect(x,y,x+88,y+88);
}
x=0;
y+=88;
{
BMP[k++]->Canvas->CopyRect(rtTile,Image10->Canvas,rtOI);
x+=88;
rtOI = Rect(x,y,x+88,y+88);
}
x=0;
y+=88;
rtOI = Rect(x,y,x+92,y+92);
}
}
問題:
暫無
2007年10月25日 星期四
2007年10月19日 星期五
OVER!!

心得:
一開始想說能不能直接用拖曳的方式拉出一塊長方形,就像小畫家裡的那樣
試了n次都沒成功,只會在image裡面拉線、畫"字"
( 字也可以在畫布上畫出來 )最多就是利用拉線的方式繪出一個矩形,可是要怎麼在裡面著色也是個問題
要能從畫出來的矩形抓到四個點的坐標,怎麼抓還在查

拉直線+寫字:
Image1->Canvas->MoveTo(0,0);
Image1->Canvas->LineTo(100,100);
Image1->Canvas->TextOut(100,100,"Who");// 寫字

畫矩形:
Image1->Canvas->MoveTo(0,0);
Image1->Canvas->LineTo(0,100);
Image1->Canvas->MoveTo(0,100);
Image1->Canvas->LineTo(100,100);
Image1->Canvas->MoveTo(100,100);
Image1->Canvas->LineTo(100,0);
Image1->Canvas->MoveTo(100,0);
Image1->Canvas->LineTo(0,0);
這是用直線拉出來的正方形
不過Canvas裡有提供畫矩形、圓形等的功能
自己上網找一下應該就會有了
要用直線拉出一個圓會死人吧 (汗!
作業的部份,東西都照抄教授給的就好了 = ="
只有一開始還沒講怎麼混色的時候比較頭大
雖然有想到要用RGB,不過當初是想用for迴圈畫出來,
方法很爛而且很麻煩,所以就在那邊耗時間等教授給答案 XD
題外話:
有找到可以用滑鼠畫線的方法
要在自己的Image的屬性裡設定event
MouseDown:
Drawing = true;
Canvas->MoveTo(X, Y);
MouseUp:
Canvas->LineTo(X, Y);
Drawing = false;
MouseMove:
if (Drawing)
Canvas->LineTo(X, Y);
可以自己試著玩看看
不過這個部份很奇怪,
滑鼠游標一定要在Image裡面才能開始畫是因為有指定,
可是畫出來的線起始位置跟滑鼠游標差了十萬八千里
紅色的是游標的始末位置
和移動軌道
黑色的是畫出來的線
要怎麼解決目前還不知道
2007年10月18日 星期四
2007年10月11日 星期四
2007年10月4日 星期四
訂閱:
文章 (Atom)