時間:xx:00~xx:00(2007/07/20-07/21)
地點:Home
進度:設計顯示YCbCr整數化DCT係數的介面。
作業:
① 顯示介面。

② 設計。
code執行:
run ... 已更新(2007.08.09/15:02)心得:
DCT係數顯示介面
寫Histogram之前如果不先完成它的話
我會一直掛心而很難跳過它繼續前進||b
而且DCT係數也已確定沒算錯
(參照學姐的方法)
於是我就先把時間砸在設計上面
之前在檢查我算的數與參考程式是否相同時
由於每次都要重拉一次表格的ScrollBar來檢視我要的值
就我懶惰的本性來說有點辛苦
於是我想了個應該會較為方便的介面
依照滑鼠點擊到的點
顯示該點在做DCT時所屬Block裡的所有DCT係數值
在這個方法中遇到的第一個難題是
實際顯示的ChildForm大小ˋ位置不如我調整的
屬性中我暫時沒有注意到相關設置
網路上找了一陣子
也都沒有提到類似問題
於是使用暴力解決
即程式碼中提到的初始ChildForm的大小ˋ位置
第二個難題是
OnMouseDown()下使用其它Form的StringGrid時
顯示錯誤訊息...
"Access Violation at address 004032EB in Module"
我測試了另一個物件Image1也出現相同問題
再改測試放在同一個Form時問題未出現
上網查過這個訊息的意義
解釋1:試圖訪問一塊已經釋放的內存
腦中想到的是那個Form早就生出來了
(OnMouseDown下有先判斷是否已生出)
怎麼會是已釋放呢?
(如果內存是我想像的這樣的話)
該解決方法是打開CPU依位址找出程式設breakpoint
我在依位址找出之後
三四個區域我也沒有breakpoint該設哪一區的概念
於是放棄||b
之後便開始亂試
目前成功的解決方法是
在OnMouseDown下再新增一次顯示DCT係數的Form
雖然沒有錯誤訊息
但Form會一直增加(汗
所以有時間會努力試其他方法修正
未來幾天想要顯示Double型態的值
以及讓使用者決定要顯示的大小
以及新增顯示全部的功能 ... 已更新(2007.07.22/17:55) 不過終於可以心無旁騖地進入正題Histogram
真的要開始寫了Orz
備註:①目前已知的Bug有:
⒜每更新一次DCT係數即產生一個新Form(上文有記載) ⒝目前取消顯示視窗未能確實取消顯示 會盡快尋找到關閉其他Form的正確語法 ⒞目前程式不提供超過一次的開圖
⒟DCT係數視窗最小化時 不該作用的OnMouseDown事件仍繼續作用 ... 已修正(2007.08.09/15:02) ②本隻程式本次更新項目如下:
⒜程式中,XY座標ˋRGB值ˋYCbCr值由原本的
OnMouseDown顯示修改為OnMouseMove顯示
⒝程式中,所有需判斷當下可否執行的部份均做好判斷 但暫無警告訊息提示使用者 ... 已修正(2007.07.22/17:55) ③顯示視窗的選項是以沒有上述的Bug為前提 所以目前如果點顯示視窗 還是會在有視窗的情況下再顯示一個 ... 已修正(2007.08.09/15:02) ④目前不足以形成一個8*8 Block的部分 其DCT係數目前本隻程式先忽略 待確定後再修改 ... 已更新(2007.08.03/14:43)