2009年11月28日 星期六

HW4

這次是第四次作業了,這次所做的主題是不用LoadFromFile的方式,而是用fopen,fread,fseek去讀取圖檔的資料後把圖給掃出來,而要做到這點,又需要用到PSPad這個軟體去檢查他的原始碼,跟之前一樣,WIKI上有指的位置的相關資訊,想看的請按這裏

在做這次的作業之前,有礙於之前的版面實在是太小了,讓我的圖顯示出來的時候都要用滾輪一直拉,這點真的是很麻煩,在看了老師上了的程式之後,我也用PageControl元件來將畫面進行分面,這個元件在課本中7-27頁有詳細介紹,所以在這我就不多說了,不過我的排版還需要再調整...個人覺得分頁之後看圖是不錯啦...結果Information那塊變得很空...看了很不習慣= =








這是我程式的新界面,看起來空空的,實際上都用PageControl分掉了。

在上課的時候老師有說明讀檔的位置,當下在教室作的時候遇到很有趣的問題,一般來說大家都會認為讀一張圖的時候是從左上角的RGB開始,但在實做出來的時候卻是從下方。


在PageControl分頁Cfile中進行讀圖(點圖可放大)。在這邊的畫面我是用動態宣告一個畫布,讓他可以自行去讀取圖的Width與Height,而動態新增一個影像元件的方法在老師的C++ Builder部落格中有介紹。這邊要說一下,很多人都有跟我遇到相似的問題,就是在動態宣告影像在ScrollBox之後影像會被裁掉,麻煩大家注意一下是否有在ScrollBox裡面多新增了一個影像元件,這會造成輸出的動態影像必須依照Image的大小來決定他的範圍,這樣反而會限制住圖的大小,所以切記啊...ScrollBox裡不要再多新增Image了...



掃完啦!!其實用這種方式的速度跟LoadFromFile開的速度差不多,不過在程式碼中就比較麻煩,因為RGB要3個為一組,所以我是設一個變數後在迴圈中+3來控制他。不過,如果不設變數的話,照道理來說程式應該會自己往下抓點才對,但是,如果將變數刪掉的話他卻掃不出來,這點倒是讓我很疑惑,不知是我的問題還是程式本身出錯。

沒有留言:

張貼留言