2010年11月10日 星期三

HW01

HW01

簡易版小畫家






功能介紹:





*基本功能:能於畫板上任意塗鴉









*讀取/儲存圖片:點選視窗左上角,可以選擇開啟圖片或儲存圖片





         開啟圖片->選擇欲使用的圖檔,呼叫之後顯示



               於視窗,並且能在圖片上任意塗鴉





         儲存圖片->將編輯過後的圖片做儲存的動作









*圖片資料:於圖片右下方會顯示該圖片的檔案路徑,以及使用者滑





      鼠所點該點之X和Y座標、還有該點的顏色RGB。







*調色盤:有基本的五色供使用者選擇,分別為黑、白、紅、綠、藍





     只要點擊該顏色區塊一下,即可變換畫筆成為該顏色。





若覺得顏色不夠用,點取下方的"自訂顏色"按鈕,將會

跑出可自定義顏色之界面(如下圖)





撰寫過程所遇之困難與心得:

第一個所遭遇到的困難就是畫板的部分吧,先前是、倘若沒有讀取任

何圖檔,就直接在畫板的位置點滑鼠左鍵,就會跑出錯誤,導致程式

強制結束,找了很久的問題,才發現,其實只要把以下這兩行用掉,

Graphics::TBitmap *BrushBmp = new Graphics::TBitmap;

BrushBmp->LoadFromFile(OpenPictureDialog1->FileName);

就不會錯了,而且可以直接在畫板的地方盡情塗鴉。

接下來就是畫筆的形狀部份了,正方形沒有問題,但是畫六邊形的時候

那個X,Y座標就讓我思考了一陣子,一開始做的形狀歪七扭八,不過經

過幾次嘗試,還是順利成功做出來了

TPoint points[6];
points[0] = Point(X,Y);
points[1] = Point(X+10,Y);
points[2] = Point(X+20,Y-15);
points[3] = Point(X+10,Y-30);
points[4] = Point(X,Y-30);
points[5] = Point(X-10,Y-15);


原來他是像人拿著一隻筆這樣,從第一個點畫到第二個點,從第二個

畫到第三個點,以此類推,要有依序的給予每個點正確的座標,不能

跳著給的。

還有常常會有,就是要刪掉不會用到的物件,結果刪除後造成程式跑

出error,或是不小心誤刪了某個物件的函數結果造成程式無法

正常執行的窘境,我在撰寫的過程中也常常遇到這樣的問題,研究了

很久發現,還要把這個地方(如圖中的紅圈處)的東西刪除,才算是

真正刪乾淨唷!

(以下為圖例)



這裡就有點像是宣告各個物件函數的地方,如果只是在主程式那邊把

函數刪掉,沒有把這邊的也刪掉的話,就會造成錯誤,有的時候如果

看到一些例如某物件未定義的錯誤訊息,不彷來這邊看看,是名子弄

錯了還是怎麼樣。

其實我覺得自己對BCB還不是很熟練,應該是還摸不夠久的關係,

而且程式語言這種東西不是說單看書本或是聽老師講解看示範就能夠

弄懂的東西,一定要實際撰寫,動腦筋去思考才能有所收穫,其實有

很多功能也是自己慢慢摸才發現的,沒實際去摸過幾遍真的會不知道

其實BCB有很多好用的功能呢!

和同學討論也是很重要的,有時候遇到一些困難,與其自己苦思很久

或是上網找了老半天的資料,倒不如直接向同學詢問,而且多和同學

交流,會發現很多自己沒有想到的問題,例如程式是否會存在著某些

漏洞?亦或是這樣的程式寫法較簡潔清楚而不會過於冗長雜亂,學習

他人程式撰寫上良好的地方、並吸收之,記取他人撰寫程式時所遇到

的錯誤、以此警惕之。

非常感謝老師寬宏大量將繳交作業的時間延長,讓我能夠把這次的程

式再寫得更完整一點,研究了很久雖然花了不少時間,但是有學到東

西的感覺真的很不錯,每一次撰寫程式就是令自己成長一次,看來我

要多加練習,以增進自己的能力!

最後,附上這次作業的完成圖~

沒有留言:

張貼留言