圖一 |
這次作業老師要我們做個類似小畫家的軟體,
蠻特別的,第一次可以做出類似畫圖的應用
小程式出來。
《圖一》為還沒執行前的畫面
圖的左上角有四個類似button的圖案是可以用來呼叫用的,最左邊那個是用來做選單列、第二個是讀bmp的圖檔、第三個儲存執行後的結果、第四個則用來讓使用者選擇顏色。
右上角的三個button及radiogroup則是所能執行的功能列。
圖二 |
選單列的下面有三行字分別為 (FileName:) 讀入圖檔的所在位址、(x,y) 滑鼠標在畫面上的x、y值、(r,g,b) 滑鼠標在畫面上的色彩值,這色彩值的顏色會顯示在色塊上。
原本老師教的是當滑鼠點到畫面上的某一點才顯示 (MouseDown),而自己就試著把它改成當滑鼠在畫面上移動時就會改變座標值及色彩值 (MouseMove)
圖三 |
一開始選擇方形及長方形、圓形印在畫面上,這三個圖形本身沒有邊框顏色可選擇,接著印三角形、六角形、菱形、不規則形,
並試著更改每個形狀所能選的圖形及邊框顏色來做變化,之後用畫筆寫 “Hello!! BCB”。
圖中那色彩選單就是透過呼叫ColorDialog來的效果
圖四 |
在做橡皮擦的功能之前,我是先去查怎樣做畫筆的效果後才想到橡皮擦應該跟畫筆的功能類似。
跟著教學一步一步做最後總算有個成果出來,雖然目前還不行自行更換畫筆的粗細,且畫筆畫出來的效果還不是說很順暢,但自己是蠻高興能透過找資料來做出從來沒接觸過的程式。
接著就來做橡皮擦的功能,一開始我想橡皮擦的功能應該是擦下去後會跟原本讀入的圖畫一樣的顏色才對。後來做過很多的嘗試後,只好讓它是擦下去會呈現白色的效果,如果按清除的按鈕,效果又跟橡皮擦不一樣,畫面會恢復剛讀檔入圖檔時的畫面。
註:剛做完畫筆的效果後,執行結果會讓畫面一直閃爍,後來找資料有看到說在圖檔所在的物件上 (GroupBox) 加上這行“DoubleBuffered = true;”指令後就解決了這個問題。
圖五 |
圖六 |
《圖六》為成品的結果
這作業仍然有蠻多瑕疵的地方,像是要讀檔的時候如果選擇取消會造成程式當掉‧‧‧
希望在接下來的課程能多學一點有關BCB的程式寫作,讓自己能寫出一些功能較完整的應用程式。
沒有留言:
張貼留言