freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于vc的圖像特效顯示研究_畢業(yè)設(shè)計-資料下載頁

2025-07-01 09:18本頁面

【導讀】程序就采用了各種各樣的圖像特效顯示,使人感到耳目一新。是一款功能較簡潔的數(shù)字圖像管理界面,實現(xiàn)對.bmp格式圖像的。該界面包含兩部分:啟動界面和主界面。文件格式,一般來說BMP文件分成4個部分:位圖頭文件,位圖信息頭,顏色表,位圖數(shù)據(jù).同時BMP文件文件可以分為DIB格式和DDB格式,象的方式實現(xiàn)圖像的可視化編程。

  

【正文】 void EffectDisplay::VBlindDisplay(CDC* pDC, CDC* pMemDC) { // 掃描高度 int nHeight = min(s_nPicHeight, s_nCDCHeight)。 // 掃描寬度 基于 VC++的圖像特效顯示研究 24 int nWidth = min(s_nPicWidth, s_nCDCWidth)。 // 百葉窗寬度 int nScanLine = 8。 for (int i = 0。 i nScanLine。 i++) { for (int j = 0。 j nWidth。 j += nScanLine) { pDCBitBlt(j + i + s_nOffsetX, s_nOffsetY, 1, nHeight, pMemDC, j + i + s_nOffsetX, s_nOffsetY, SRCCOPY)。 } DelayTime(50)。 } } *作用 : 水平百葉窗特效 ******************************************************************************/ void EffectDisplay::HBlindDisplay(CDC* pDC, CDC* pMemDC) { // 掃描高度 int nHeight = min(s_nPicHeight, s_nCDCHeight)。 // 掃描寬度 int nWidth = min(s_nPicWidth, s_nCDCWidth)。 // 百葉窗寬度 int nScanLine = 8。 for (int i = 0。 i nScanLine。 i++) { for (int j = 0。 j nHeight。 j += nScanLine) { pDCBitBlt(s_nOffsetX, j + i + s_nOffsetY, nWidth, 1, pMemDC, s_nOffsetX, j + i + s_nOffsetY, SRCCOPY)。 } DelayTime(50)。 基于 VC++的圖像特效顯示研究 25 } } 對于常見特效顯示算法的改進 掃描、柵條、馬賽克等較為常見的特效顯示其實現(xiàn)都是比較簡單的,易于實現(xiàn)卻有比較美觀的效果,能夠廣泛的應用于各多媒體中,但若需要顯示的圖像大小改變時,會出現(xiàn)不理想的顯示效果。 本次設(shè)計,對上面幾種特效進行了修改,在算法中使用通用的參數(shù)使算法更靈活實用,這 樣可以應對不同分辨率圖像以及可以由用戶設(shè)定各顯示參數(shù)。具體實現(xiàn)是:在掃描顯示中定義 SleepTime、 temp兩個變量分別表示時間延遲和在掃描頭部模糊帶寬,以加強掃描條整個動畫效果的動感效果; 在柵條顯示中定義 SleepTime、 buf 兩個變量分別表示時間延遲和柵條寬度以應對不同分辯率圖像或不同要求的顯示;在馬賽克顯示中加入 SleepTime、 buf分別表示時間延遲和馬賽克塊寬度,用以解決設(shè)置簡單的固定寬度面對不同的分辨率的圖像時會出現(xiàn)邊緣無法顯示的現(xiàn)象。同時本次設(shè)計時在圖像邊緣顯示時采用特殊算法,使整個圖像能完整顯示。 基于 VC++的圖像特效顯示研究 26 4 設(shè)計一個圖像瀏覽工具 GraphShower 在本章對兩個新的圖像特效顯示 —— 漸變百葉窗特效和泡泡腐蝕特效,設(shè)計出它們的顯示方法和算法,并實現(xiàn)基于 VC++的程序界面的設(shè)計。通過實驗分析圖像特效顯示最終效果,提出待改進之處。 兩個特效顯示及其算法 漸變百葉窗顯示 漸變百葉窗效果是本次設(shè)計的特效顯示之一,漸變百葉窗特效顯示效果的設(shè)計與百葉窗效果有相似之處,都是將整圖分成多個像素條后,各像素條進行掃描顯示,百葉窗是相對簡單的效果之一,而漸變百葉窗顯示在多媒體網(wǎng)頁及其它地方的新聞圖片的過渡效果中有很多類似或相同的效果,它們在比較美觀實用,但其算法卻不盡相同,這里設(shè)計的是根椐其中一個效果研究出來的算法。 特效顯示算法描述:在橫向向右的 顯示特效中,圖像被分成 N 等份(或由于不能等分成 N份使得最后一份稍?。┴Q條,顯示從最左端開始每次顯示一個單位像素的寬度豎條 ,高度為圖像高度,第一步顯示第一格的左邊第一像素條,第二步顯示第一格的左邊第二像素條同時顯示第二格的左邊第一像素條,第三步顯示第一格左邊第三像素條、第二格左邊第二像素條和第三格左邊第一像素條,每一步都加上時間延遲,如此循環(huán)下去,直到最后一格最后一像素條顯示完成。對于等分成的 N 格,每條都有 M 像素條,所以當顯示運行一小段時間后保持運行變化的格數(shù)最多只有 M格,這樣整體顯示就像從左到右依次的拉動窗 簾一樣的效果,所以其關(guān)鍵算法 基于 VC++的圖像特效顯示研究 27 圖 漸變百葉窗顯示的 x 值數(shù)列 只要取得第 i 步應該顯示的像素條的 x 坐標 ,對于寬度為 100 像素的圖,將它分成 10 份顯示時每一步顯示的像素條位置應如 圖所示。 漸變百葉窗顯示算法流程如 圖所示 : 基于 VC++的圖像特效顯示研究 28 圖 漸變百葉窗顯示的算法流程圖 漸變百葉窗算法實現(xiàn)關(guān)鍵代碼如下: const int buf=15。//定義每等份格的像素寬度 int i=0。 //整體運行的步數(shù) int Single,Rate。//定義 Single,Rate,使得 Single+Rate*buf為第 i 步顯示的最 //左一條像素條 x 坐標 再由此 x 坐標可計算得第二、三 ..條的坐標 while(1) { if(ibuf)//步數(shù)小于一條的寬度,即左第一格還未顯示完 { Single=i。 //左第一條的 x Rate=0。 //坐標即為步數(shù) i 開始 初始化步數(shù) i、 每格像素寬 buf 所有圖像顯示完成? 運算取得此步顯示的最左一條像素條 取得 從最左像素條開始的其它應該顯示的像素條 k 第 k 條像素條應該顯示? 調(diào)用顯示函數(shù)顯示第 k像素條 返回 N Y N Y 步數(shù)自加 基于 VC++的圖像特效顯示研究 29 } else{ Single=buf1。//左第一格已經(jīng)顯示完 ,如 buf 為 10,則第 i步應該 Rate=ibuf+1。//顯示的最左一條 x 坐標為 (101)+(i10+1)為 19,29,39 等 } int j=Single+Rate*buf。//算得第 i步顯示的最左一條像素條 x坐標 for(int k=j。k+=buf1)//顯示第 i 步所有應顯示的像素條 { if(k=)break。//運算所得 x 坐標超出圖寬度 if((kj)/(buf1)j)break。 //jbuf時第一格還在顯示中,顯示的條數(shù)為 應 j if((kj)/(buf1)buf)break。 //j=buf時一步顯示格數(shù)不能超過 buf格 ,而且計算坐標將不正確 thisStretchBlt(IncX+k,IncY,1, amp。dc, k,0,1,SRCCOPY )。//顯示第 k坐標條像素條 //IncX,IncY 為傳遞進來的圖像顯示左上點坐標 } Sleep(50)。//時間延時 if(j=)break。//圖像顯示完成 i++。//步數(shù)自加 } 基于 VC++的圖像特效顯示研究 30 圖 漸變百葉窗顯示運行效果圖 算法只是用到稍為復雜的數(shù)字運算而不用另設(shè)如數(shù)組隊列等輔助手段,這樣使運行速度得以加快,但這樣的算法將難以理解。若將buf設(shè)為 10,理順后再把整個數(shù)字系統(tǒng)想像為 buf進制則更容易理解,而且降低調(diào)試難度。 漸變百葉窗顯示運行效果圖如圖 所示。 泡泡腐蝕顯示 泡泡腐蝕在設(shè)計的時候是由馬賽克顯示聯(lián)想到下雨的時候地面被打濕的現(xiàn)象 ,這也有些類似于馬賽克顯示,但是又在隨機顯示的同時加入了有規(guī)律性跟雨滴大小的不定性。整個顯示分成兩部分:第一部分由每一步定量的產(chǎn)生一定面積大小的泡泡,并隨機顯示在圖像顯示區(qū),顯示區(qū)域的圖片塊取得的是待顯示圖片的相應位置圖片塊,泡泡數(shù)目一直增加直至圖像顯示完全;第二部分對已經(jīng)顯示出來的泡泡進行擴大顯示,直至整圖顯示完全,其擴大的速度在本設(shè)計中是通過控制泡泡半徑的增加度與其面積成反比的運算。 算法實現(xiàn)基本思路:由于對隨機產(chǎn)生的泡泡還需要使其產(chǎn)生擴大的效果,不能通過簡單的計算得到,也不能使用數(shù)組記錄下來,所以在設(shè) 計中引入了隊列進行保存各泡泡中心點坐標以及泡泡半徑和擴大速度(擴大的速度都是變慢的,所以設(shè)計中以另一個速度因子 speed 基于 VC++的圖像特效顯示研究 31 表示,把每個泡泡運算一遍看是否擴大做為整個程序運行的一步,那么一個泡泡需要經(jīng)過一步便擴大一次半徑或都要經(jīng)過 N步才擴大一次半徑,這個 N 便是速度因子)。為了使由于隊列運算量大而導致運行時間過長的時間縮短,程序使用的隊列是自主開發(fā)的,設(shè)計了一個隊列類 class LinkQueue,隊列采用先進先出模式處理數(shù)據(jù)。算法在隨機入隊 add_poin 個點后開始對隊列中的點計算并顯示應該顯示的區(qū)域后變化速度 因子再放入隊列尾,運算完一遍這 add_poin 個點后再隨機的放入 add_poin 個點,再對隊列中的 2*add_poin 個點運算如此循環(huán),并使用一個 BOOL 的數(shù)組記錄圖片每一個像素點是否顯示過,循環(huán)當所有點都顯示而退出。 泡泡腐蝕顯示流程如圖 所示。 泡泡腐蝕算法關(guān)鍵代碼如下: LinkQueue q。//初始化一個空隊列 QElem poin。 //進出隊列及運算顯示的點, QElem用于保存泡泡點信息的數(shù)據(jù) const add_poin=15。//每一步新加入隊列的泡泡點數(shù) const add_wid=2。//泡泡擴大時擴大的半徑像素數(shù) srand((unsigned)time(NULL))。//產(chǎn)生隨機數(shù)的種子 BOOL * record = (BOOL *)malloc(**sizeof(BOOL))。 //記錄數(shù)組,記錄圖像所有像素點是否顯示 for(int i=0。i=*。i++)record[i]=0。 //初始化記錄數(shù)組 int num_show=0。//記錄已經(jīng)顯示出來的點個數(shù) int length_Queue=0。//記錄某一步隊列中泡泡個數(shù) 基于 VC++的圖像特效顯示研究 32 圖 泡泡腐蝕顯示的算法流程圖 開始 初始化數(shù)組、變量隊列等 空隊列? amp。amp。所有像素點顯示 隊列中所有泡泡運算完一遍? 新加入 add_poin個泡泡信息數(shù)據(jù) 出隊一個泡泡信息數(shù)據(jù) 分析 speed,對此泡泡擴大顯示 ? 改變 speed并入隊 取以泡泡圓心為中點 2*are_wid為寬度的正方形內(nèi)第一像素點 是否顯示此點? 顯示此像素點,并標示愿 取得正方形區(qū)域的下一點 修 改泡泡信息并入隊 隊列現(xiàn)有泡泡循環(huán)完? 延時函數(shù) 返回調(diào)用 該泡泡循環(huán)完 Y Y N N N Y Y N Y N 基于 VC++的圖像特效顯示研究 33 do{ if(length_Queue==())//某步中是否已有泡泡都計算過一遍 { length_Queue=0。//已計算過 的泡泡重置為零 for(short addpoin=0。addpoinadd_poin。addpoin++) { //在隊列中新加入多個泡泡 =2+rand()%2。//新泡泡隨機大小 =1。//新泡泡顯示因子 =rand()%。//
點擊復制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1