不過我拿到改版的程式碼把一些元件拉完之後還是發現一堆錯誤,剛開始卡最久的大概是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的圖檔
沒有留言:
張貼留言