導航:首頁 > 文檔加密 > scan語言圖像加密

scan語言圖像加密

發布時間:2024-03-17 10:03:28

① 如何通過C++編程實現掃描圖像。

掃描是最基本的特效顯示方式,它沒有劃分圖像塊,只是順序地一行一行或一列一列地顯示圖像。下面的程序是向下掃描的代碼實現。

/***************************************************************************函數名:* Scan(CDC *pDC)**函數參數:* CDC *pDC-指向設備環境的指針,用於顯示點陣圖數據**返回值:* 無**說明:該函數實現了圖像的掃描顯示的效果**************************************************************************/void SpecialEffectShow::Scan(CDC *pDC) //掃描顯示一幅圖像{int bitmapWidth=GetDimensions().cx;//獲得源圖像的寬度,以像素為單位int bitmapHeight=GetDimensions().cy;//獲得源圖像的高度,以像素為單位 CRect rect(0,0,bitmapWidth,bitmapHeight);//以源圖像的尺寸創建一個矩形CBrush brush(RGB(255,255,255)); //設置畫刷為白色pDC->FillRect(&rect,&brush);//將已經顯示出來的原圖像重新設置成白色,達到刷新屏幕的效果 LPBITMAPINFO pBitmapInfo=(BITMAPINFO*)m_lpBmpInfoHead;//為適應StretchDIBits函數的需要,將圖像信息頭指針強制轉換為LPBITMAPINFO類型 for(int j=0;j<bitmapHeight;j++)//掃描特效顯示的具體演算法{::StretchDIBits(pDC->GetSafeHdc(),0, j, bitmapWidth, 1,0, bitmapHeight-j, bitmapWidth, 1,m_pImgData, pBitmapInfo,DIB_RGB_COLORS, SRCCOPY);Sleep(3);//設置延時}}

以上代碼主要調用了StretchDIBits()函數,在SpecialEffectShow類的其他特效顯示中也都調用了該函數。StretchDIBits函數是全局的Win32 API函數,它的作用是拷貝源點陣圖中的一個矩形區域的數據,然後顯示到目標設備環境中的一個矩形中,如果源矩形和目標矩形的大小不一樣,StretchDIBits函數有壓縮或拉伸源點陣圖的功能。以下是該函數參數的說明。

int StretchDIBits(HDC hdc, // handle to DCint XDest, // x-coord of destination upper-left cornerint YDest, // y-coord of destination upper-left cornerint nDestWidth, // width of destination rectangleint nDestHeight, // height of destination rectangleint XSrc, // x-coord of source upper-left cornerint YSrc, // y-coord of source upper-left cornerint nSrcWidth, // width of source rectangleint nSrcHeight, // height of source rectangleCONST VOID *lpBits, // bitmap bitsCONST BITMAPINFO *lpBitsInfo, // bitmap dataUINT iUsage, // usage optionsDWORD dwRop // raster operation code);

HDC hdc:目標設備環境句柄;

XDest:目標矩形左上角的X坐標,坐標是邏輯單位,在MM_TEXT映射模式下,一個邏輯單位為一個像素(有關映射模式的問題,請讀者參考其他圖書或MSDN);

YDest:目標矩形左上角的Y坐標,坐標是邏輯單位;

nDestWidth:目標矩形的寬度,坐標是邏輯單位;

nDestHeight:目標矩形的高度,坐標是邏輯單位;

XSrc:指定源點陣圖圖像矩形的左上角的X坐標,坐標單位是圖像的像素;

YSrc:指定源點陣圖圖像矩形的左上角的Y坐標,坐標單位是圖像的像素;

nSrcWidth:源點陣圖圖像矩形的寬度,坐標單位是圖像的像素;

nSrcHeight:源點陣圖圖像矩形的高度,坐標單位是圖像的像素;

lpBits:源點陣圖數據指針;

lpBitsInfo:指向源點陣圖的BITMAPINFO結構的指針;

iUsage:函數使用方式,詳細參數說明請參考MSDN;

dwRop:當使用壓縮或拉伸功能時所使用的光柵模式,詳細參數說明請參考MSDN。

我們在視圖類CChap1_6View中映射「掃描顯示」菜單事件處理函數OnScan(),程序運行時,點擊「掃描顯示」菜單即可實現圖像的掃描顯示效果。下面是CChap1_6View:: OnScan()的代碼。

void CChap1_6View::OnScan() {//獲取文檔類中m_dib的指針,訪問當前DIB數據CChap1_6Doc *pDoc=GetDocument();ImgCenterDib *pDib=pDoc->GetPDib();
//只處理彩色圖像或灰度圖像
if(pDib->m_nBitCount!=24&&pDib->m_nBitCount!=8){
::MessageBox(0,"只處理彩色和灰度圖像",MB_OK,0);
return ;
}

//定義SpecialEffectShow類的對象SpShow,用當前DIB數據為其初始化
SpecialEffectShow SpShow(pDib->GetDimensions(),
pDib->m_nBitCount,pDib->m_lpColorTable,pDib->m_pImgData);

//獲得設備環境變數
CClientDC aDC(this);

//調用掃描程序,傳遞設備環境指針
SpShow.Scan(&aDC);
}

閱讀全文

與scan語言圖像加密相關的資料

熱點內容
自己購買雲主伺服器推薦 瀏覽:421
個人所得稅java 瀏覽:761
多餘的伺服器滑道還有什麼用 瀏覽:191
pdf劈開合並 瀏覽:28
不能修改的pdf 瀏覽:752
同城公眾源碼 瀏覽:489
一個伺服器2個埠怎麼映射 瀏覽:297
java字元串ascii碼 瀏覽:79
台灣雲伺服器怎麼租伺服器 瀏覽:475
旅遊手機網站源碼 瀏覽:332
android關聯表 瀏覽:945
安卓導航無聲音怎麼維修 瀏覽:332
app怎麼裝視頻 瀏覽:430
安卓系統下的軟體怎麼移到桌面 瀏覽:96
windows拷貝到linux 瀏覽:772
mdr軟體解壓和別人不一樣 瀏覽:904
單片機串列通信有什麼好處 瀏覽:340
游戲開發程序員書籍 瀏覽:860
pdf中圖片修改 瀏覽:288
匯編編譯後 瀏覽:491