1. 程式人生 > >那就先做個顯示影象的程式試試

那就先做個顯示影象的程式試試

老師讓做的第一個關於顯示影象的程式。

什麼格式的影象可以顯示?

有多少種方法?

每種方法的應用場合以及優劣?

從外部資料夾顯示和內部資源顯示?

顯示出影象的大小是原圖大小還是可適應大小?

顯示影象函式的內部原理?

以上是我能想到的這一個星期內要解決的問題。

事實上我遇到的第一個問題是什麼是真彩色啊256色啊128色啊。。。。。。

A1:一幅真彩色圖片,每一個畫素都是用RGB三個位元組表示的,每個位元組有8位(適應計算機)表示RGB的256種亮度,所以這就是常說的24位真彩色,就特別真,涵蓋了全部的色彩16777216種,即真彩色影象也叫16777216色影象嘍。世界上的顏色遠不止這些,可是計算機最多的顏色也就這些,這也遠超過人類視覺能辨別的顏色了。看得出來這樣的真彩色影象實在是太大了。所以一般所用的16色影象啊,256色影象啊都用到調色盤的概念,很好的壓縮了。

A2:平時老是做的BMP檔案格式,圖片的格式多種多樣,這裡也沒必要掌握吧,但是得搞清楚MFC中只有BMP格式的檔案能顯示和處理嗎?為什麼?

bmp格式的現在有很多種,有些MFC是識別不了的。這就尷尬了。

PNG圖片也是可以載入的。(需要驗證,)

CStatic* pWnd = (CStatic*)GetDlgItem(IDC_PIC); // 得到 Picture Control 控制代碼
CImage image;
image.Load(_T("png.png");
HBITMAP hBmp = image.Detach();
pWnd->SetBitmap(hBmp);
pWnd->SetWindowPos(NULL, 
                   0, 
                   0, 
                   100, 
                   50, 
                   SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER);

A3:顯示影象的方法。

方法一:利用picture控制元件,無論是靜態還是動態吧,都是一個意思。這種方法得在資源中有BITMAP資源,所以也只能顯示bitmap型別的圖,picture控制元件本身成為了一個圖片。動態只是動態載入了控制元件