2010年1月16日 星期六

HW5

其實打這次程式真的很累,不過其實也是自作自受,因為當初這堂課我把他翹掉窩在圖書館讀工數,結果沒上課的心理作祟作業也懶得去做,只稍微試了老師PO的第一版範例程式弄了半小時就放棄了,後來也沒時間管HW5,終於今天忙完期末考和專題報告花了一整個晚上寫HW5,還發現原來老師的範例程式老早就改版了,好寫很多!
不過我拿到改版的程式碼把一些元件拉完之後還是發現一堆錯誤,剛開始卡最久的大概是crPalette[i].bRed=0 ,我一直搞不懂bRed是怎麼去定義的,先去參考了之前灰階的調色盤發現沒幫助,決定先找找看Blog上其他同學有沒有碰到類似問題,其實大部分同學的hw5我都有稍微看過,發現大家還滿神的...原來只要稍微改一下元件的名稱然後用sort就行了?
不過終於發現有實際做的同學有跟我一樣的問題,參考了簡呈恩的方法後終於知道還要自己去一些定義結構才能使用老師的程式碼。
先把Label拉一拉和定義一些未定義的變數後,終於讓大部分的程式碼都可以跑,我才慢慢看每段程式碼,發現讀標頭檔那段有些我實在看不懂,類似 bCR=bCR >> 5; bCR=bCR+1; 這種 >>是什麼意思呢??
後來卡最久的其實是排序,因為看到老師有定義 float fLuminance[256]; 這變數來放色彩亮度,我直覺用這個來當做色彩亮度比較然後排序就可以了,沒想到怎麼排都不對,後來想到要排256次於是很開心設了迴圈馬上跑跑看,結果還是一樣...
不過很扯的是,我用了老師另外定義的crSortedPelette(拿來複製原本crPelette的RGB)  
然後用(crSortedPelette[k].bRed+crSortedPelette[k].bGreen+crSortedPelette[k].bBlue)/3)來比較大小,這個我覺得不夠聰明的方法竟然就正確排序了? 老師設fLuminance還特地幫我們算出色彩亮度不就要方便拿來比較亮度嗎?
結果發現是我自己比較亮度之後只swap了crSortedPalette忘記交換fLuminance(在打完上面後突然想到 哈哈...),試過之後就成功能使用fLuminance這方法了,好吧,所以老師幫我們寫的一個好用的fLuminance來比較亮度!! 哈哈~~
在全部寫完之後載入金龜的圖才發現顏色不對?? 後來才發現原來是RGB位置放錯,一定是老師故意改錯要讓我們改 哈!

接下來就是展現成品的時候了!!

(1)讀取金龜圖



(2)讀取小畫家轉成GIF的圖檔





上面這兩張明明是不同的圖檔但是為什麼色盤都一樣?? 難道是小畫家轉成GIF都用一樣的色盤嗎? 這是我自己的猜測~~

(3)讀取用專業轉圖軟體轉換的GIF檔


一切正常~完美!! 終於在凌晨三點做完HW5了~~ 開心阿!! 可以安心睡覺了!!!




沒有留言:

張貼留言