2009年12月17日 星期四

HW5

Update : 新HW5作業新增於分隔線後

完成HW4後,改善了之前提到的要把欲讀取的BMP檔以更人性化的方式開啟
(註:之前是將入徑寫死在程式碼中 "C:\\Bitmap.bmp")
另外閒著沒事便把程式介面來個大翻修
以Pagecontrol統整所有功能,使程式操作起來較系統化
也加入了狀態列將滑鼠座標與即時色彩值顯示在狀態列上

然後,是這禮拜的作業 HW5 - 讀取GIF的調色盤資訊並顯示出來

查了一下GIF檔頭資訊的格式,一邊用PSPad開啟老師提供的金龜子(!?).gif比對
原來GIF檔頭資訊還真精簡
GIF標籤、制定版本、長寬與不知名的3bytes之後就是一目了然的調色盤
看到這裡,作業已經在腦袋裡完成了九成,
讀取3bytes的RGB而已沒什麼困難,只要將他顯示出來就好

顯示出來.... 怎麼顯示出來?!
翻了BCB提供的眾元件,似乎沒有調色盤模組之類的玩意兒...
難不成要我拉出256個Panel來上色?! 這方法蠢到自己都想撞豆腐自殺
VB曾經寫過元件陣列,雖然說操作起來蠻方便的
但是一來,BCB的元件陣列我不會用
  二來,還是要拉出256個元件阿!!!

轉念一想,如果.. 用畫的勒?
一格一格一格畫出來.. 反正是程式畫,又不是我畫,感覺起來似乎可行
打開BCB,Set一個New space專屬於GIF 調色盤
開始順著感覺Key出填格子命令的程式碼
過程輕鬆愉快10幾行搞定,關鍵性的一Run...

唷~ 一次到位,絢麗奪目的256格調色盤
比對老師的調色盤後..

宣告收工,HW5破關

(翻新後程式介面)


HW5作業展示


這是從課程討論區抓下來的金龜子.gif檔案,開啟他


極致藝術,馬賽克完成



寫在最後面:本來還在想說要怎麼顯示GIF圖檔以及他的調色盤
要擠在同一頁?可是分開來感覺又降低關聯性
要另外開一個Pagecontrol?
拜託..這一加,控制開關得重新調整簡直是自討苦吃

最後要LoadFormFile時..咦 碰了?味瞎咪?
有求必應的辜狗大神告訴我.. 喔.. BCB要讀GIF要自訂套件喔...
那就這樣吧~


===================================


題目新增一項動作 - 調色盤依色彩亮度排序

聽到題目馬上直接想到使用陣列處理,然後再基礎的Sort比大小
雖然原先沒有用陣列去處理調色盤的顏色
不過將256個顏色assign給陣列不會太困難

剩的問題是亮度怎麼分析?
課堂上也有解答,乘以莫名其妙的數字轉灰階便是間接求出亮度

剩下就是將一團空想實現在BCB上
實際操作也沒問題,宣告幾個公用變數以供Sort元件存取Open元件所處理的色值
套上以前寫到爛的Sort方法

恩~ 成果看似跟老師的一樣
原本每格色彩之間沒有間隙,想說這樣還可以跟老師的範例做個區隔
不過看了看覺得都擠在一起好像不怎麼好看...

於是乎順手賞了它們一些個田埂,一個蘿蔔一個坑
果然是美觀了些~

除了從暗排到亮,另外生了一個從亮排到暗...
不過這沒啥好說嘴的就是,不過就大於變小於罷了....


開啟金龜子.gif Successful !!



依照亮度排序 - 暗 to 亮


依照亮度排序 - 亮 to 暗




沒有留言:

張貼留言