?? 說明.txt
字號:
需要注意的地方:
使用VC++6.0做開發(fā)工具, 采用簡單的SDI框架結(jié)構(gòu) ,一次處理一幅位圖(有興趣的可以作成MDI)
1)位圖信息的數(shù)據(jù)是從左下往右下為一行,一行一行往上排的。
2)每行像素應(yīng)該是4的倍數(shù),不足的地方用空點(diǎn)補(bǔ)齊,讀的時(shí)候注意跳過冗余點(diǎn)。
3)主要數(shù)據(jù)都存在Doc里面,BMP的主要數(shù)據(jù)存在一個(gè)由ImgData指向的BYTE型的內(nèi)存空間(根據(jù)位圖的大小,動(dòng)態(tài)分配的)。
4)數(shù)據(jù)讀進(jìn)來以后,注意向內(nèi)存中貼圖,以保證刷新的效率。
5)程序執(zhí)行流程
應(yīng)用程序生成--》打開--》CDipView的OnFileOpen 函數(shù)--》
調(diào)用CDipDoc的FileOpen 函數(shù)--》并使用myDoc->UpdateAllViews(NULL); 刷新
自動(dòng)調(diào)用CDipView的OnPaint函數(shù)--》調(diào)用CDipView的OnDraw函數(shù)----一個(gè)像素點(diǎn)一個(gè)像素點(diǎn)的畫
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
比較重要的地方
讀BMP文件,只能打開256色 (可以是灰度)
顯示和內(nèi)存貼圖技術(shù)
關(guān)于調(diào)色板: 調(diào)色板實(shí)際上是一個(gè)數(shù)組,4個(gè)BYTE 分別是 B,G,R,和 Reserved
每一個(gè)像素點(diǎn)都有一個(gè)相應(yīng)的數(shù)組。
關(guān)于VC和windows 的繪圖機(jī)制:
使用GDI(圖形設(shè)備接口)對象,通常使用CDC 類,CPaintDC也一樣(device-context)設(shè)備上下文
windows下的MFC編程機(jī)制,消息驅(qū)動(dòng),事件等待!
全局的app(應(yīng)用程序?qū)ο螅?
注意 手工分配內(nèi)存的清除 和CDC對象的刪除 以釋放系統(tǒng)的GDI資源
每一個(gè)new操作符都要對應(yīng)一個(gè)delete
雖然已經(jīng)弄出來了,還是希望大家好好讀讀源程序。
你們以后的工作:
在菜單中添加菜單項(xiàng),通過ClassWizzard 生成消息響應(yīng)函數(shù)(當(dāng)然也可手動(dòng)添加),
所有的操作應(yīng)當(dāng)是對 BYTE* ImgData;進(jìn)行的。
在完成相應(yīng)的功能后 將 isnewfile 和 isnewiamge 置為真 ,并使用myDoc->UpdateAllViews(NULL); 刷新
當(dāng)然,可以更加有個(gè)性化一點(diǎn),有能力的同學(xué)可以自己完成。
隨著課程的進(jìn)行,菜單功能逐漸豐富,最后完成基本的數(shù)字圖像處理的功能,而不必最后一下完成一個(gè)大的作業(yè)。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -