(心得修正…發現自己太笨做了多餘的東西)
依照習慣先來個成果圖↓ 為了方便觀看,此版本是特別弄出8bits的切面
這次作業花了不少的時間,但是完成之後會發現原理其實很簡單。
基礎原理:
假設要呈現bit1,就是將該值跟1(二進位00000001)做&運算
bit2,就是將該值跟2(二進位00000010)
bit3,就是將該值跟4(二進位00000100)以此類推…
我遇到了幾個問題點是一開始我直接將灰階做&運算後,做出bit層次愈低的切面會愈來愈暗。
應該是因為灰階色彩明暗度有關係吧!?
後來我將運算改為以一個變數來計算儲存該bit的值(1,2,4,...,128)
然後在做取餘數的運算之後值只會剩下0或1
再乘255就只會有黑跟白兩種色
這樣呈現出來的結果就是上面的那張圖。
簡單的說就是抓像素點然後做我上面提到的運算就大功告成了,
但是其中疑問及方法需要思考一下。
另外一個問題就是bmp圖檔的問題,好像是會造成記憶體讀取的問題?
那時候花了點時間調整變數以為是重複讀取得關係…
這問題有同學說出來了就是要使用24位元的bmp格式…
在做完第六個作業後就更證明是自己功力不夠…
因為HW6老師的程式碼是可以跑8bit的,但我將程式碼修改還是沒辦法
接下來的問題是BCB元件中功能不熟悉造成的
if else用bit來判斷要不要進入執行我寫的運算
因為我ComboBox設定為1~8,pow運算會有誤差,必須調整為0~7
判定式為互斥,但是卻發現我的if似乎會進入但是else也會進入!
後來發現ComboBox指向的東西為ItemIndex是造成我判斷時候出錯的原因
Text是框裡的值,而ItemIndex是由0~7…
附上一張將彩色轉灰階之後做位元切面的圖及彩色的位元切面…
沒有留言:
張貼留言