導航:首頁 > 文檔加密 > 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語言圖像加密相關的資料

熱點內容
網站小說源碼 瀏覽:297
php用什麼ide 瀏覽:863
網上預約課程app哪個好 瀏覽:150
android兼容測試工具 瀏覽:96
雲伺服器不支持虛擬化怎麼辦 瀏覽:189
加密方式的演變 瀏覽:364
java常用演算法pdf 瀏覽:734
伺服器數據遇到異常什麼原因 瀏覽:450
phpexif信息 瀏覽:542
單片機三位元組浮點數 瀏覽:756
命令與征服泰伯利亞戰爭下載 瀏覽:378
c窗口界面編程 瀏覽:23
hypermill編程能做模板嗎 瀏覽:782
計算機網路最經典的演算法 瀏覽:628
華為思科的配置命令 瀏覽:869
linux設置光碟啟動 瀏覽:361
程序員俱樂部注冊 瀏覽:19
洗潔精雞蛋盤解壓視頻 瀏覽:295
企業內網加密app 瀏覽:51
騰訊雲伺服器怎麼設置本地網路 瀏覽:625