2009年11月26日 星期四

HW4

作業邁向第四次
一直不斷加上去的功能讓整個程式碼變的很雜亂
雜亂的原因是由於我致力於架構出"像樣點"的Software
所以大量用到顯示/隱藏可使用/不可使用的屬性

例如:
之前的開啟圖檔後Show informations或轉成grayscale的功能
為了避免尚未load image就按下Buttom而造成錯誤
所以在load image前,Buttom屬性是設定成Disable的

當功能越多,判斷越多,開關越多的情況下
每每一個Buttom_click的function就要先佔掉一面的控制開關
不知道有沒有辦法可以好好整頓整頓那些雜亂的開關..


而這次作業上一次課堂上就做出來了
老實說是不經意的抓以前的程式碼變造的
//為什麼說不經意..原因有二
//一是因為我都是在筆電上處理BCB,而那個禮拜沒帶
//程式碼都在筆電裡,要重新拉出一堆物件
//還沒開始作作業應該都要下課了..
//另一個原因是期中考殺很大的必修要看不完了
//實在沒心思去寫程式,後來書越看越煩所以又跟同學借程式來試作

也因為沒有遇到什麼大到難以克服的問題
所以我認為是不怎麼困難的
倒是後來老師提出來的疑問還真的讓我咦了好大一下


fseek指向,然後用fread讀後
指標應該是理所當然的指向讀取的最後一個byte尾
但是如果把fseek抽離構圖迴圈,單留fread在裡面讀
會發生無法預期的狀況,解釋不出來的現象,還頗匪夷所思的...


因為電腦在期中考週的前一天故障
造成這個作業沒有充分的時間達到自己架構的模樣
(補充:作業五已實現)


程式初始如下:
從MainMenu選擇繪圖...就會讀取設定好的指定位置的檔案,開始繪圖















(畫到一半的時候)















讀檔完成後會一併Show出檔頭資訊
















比較要注意的地方應該是Bitmap檔頭奇異的儲存格式:
1.順序不是以R, G, B方式排序,而是以B, G, R排序
2.儲存的像素點是從左下到右上
(這尤其奇怪的,Image的左上座標是(0,0),右下是(X_MAX,Y_MAX)
就算是(0,0)倒反,也應該是從(X_MAX,Y_MAX)到(0,0)
但是這是題外話,一開始就沒有被這個排序規則搞到
因為找到了色彩值的檔頭位置後
為了要確定的確是某像素點的顏色
就組合起來比對,一下就發現像素點是從左下開始向右排序
)


原本的計畫是:
在繪圖的時候開啟一個新的Form或Frame來做繪圖的動作
繪圖完成後再把圖像Load到Image的物件中
再另外彈出一個Form/Frame來Show檔頭資訊
這部分還要稍微Serch一下參考範本;


而開啟的檔案路徑目前是寫死的
理想中是拉一個textbox讓使用者輸入檔案路徑
不過這樣一來雖然程式變的較人性化
但是要使用者輸入檔案路徑好像也是件麻煩事
因為要預防格式輸入錯誤去做判斷
而使用者要自己輸入路徑+檔名用起來也很不方便

沒有留言:

張貼留言