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

熱點內容
安卓怎麼測量開機電壓 瀏覽:775
程序員素質大全 瀏覽:952
激戰伺服器不見了怎麼辦 瀏覽:982
安卓如何退回初始系統 瀏覽:951
用什麼手錶能代替app 瀏覽:705
女程序員熬夜體檢 瀏覽:715
解壓故事校園戀愛又煩惱 瀏覽:556
冰箱壓縮機放多久能啟動 瀏覽:171
軟體演算法發明專利 瀏覽:988
旁氏演算法 瀏覽:767
程序員那麼可愛電視劇免費觀看極速版 瀏覽:748
程序員那麼可愛陸漓孩子保住了嗎 瀏覽:564
如何獲取伺服器dns秒解 瀏覽:665
如何破解大黃蜂的加密文件 瀏覽:11
新概念英語第三冊pdf 瀏覽:401
分項詳細估演算法步驟 瀏覽:437
ipad桌面文件夾放大 瀏覽:893
我的世界基岩版怎麼進國際伺服器 瀏覽:516
福州醫院有沒有解壓艙 瀏覽:470
帶pwm的51單片機 瀏覽:918