国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
| 天極Yesky - 全球中文IT第一門戶 - 軟件 - VC數(shù)字圖像處理編程講座之三(3)
三、 圖像的顯示

  顯示DIB位圖數(shù)據(jù)可以通過設(shè)備上下文CDC對(duì)象的成員函數(shù)CDC::Bitblt()或CDC::StretchBlt()來實(shí)現(xiàn),也可以通過API函數(shù)SetDIBBitsToDevice()或StretchDIBBits()來實(shí)現(xiàn),函數(shù)中具體所用到的各個(gè)參數(shù)的意義可以參考MSDN。其中StretchDIBBits()和CDC::StretchBlt()可以將圖像進(jìn)行放大和縮小顯示。當(dāng)從文檔中裝入位圖文件時(shí),CDIBView類的OnInitialUpdate函數(shù)將被調(diào)用,因此可以在該函數(shù)中實(shí)現(xiàn)對(duì)視圖尺寸的設(shè)置,用于正確的顯示位圖,然后就可以在視圖類的OnDraw()函數(shù)中正確的顯示位圖了。這兩個(gè)函數(shù)的具體實(shí)現(xiàn)代碼分別如下所示:

/////////////////////////////////////////////////////////////
void CDIBView::OnInitialUpdate()
{
CscrollView::OnInitalUpdate();
CDIBDoc *pDoc=GetDocument();
If(pDoc->m_hDIB==NULL)//如果位圖數(shù)據(jù)為空,設(shè)置m_sizeDoc的默認(rèn)尺寸;
pDoc->m_sizeDoc.cx=pDoc->m_sizeDoc.cy=100;
SetScrollSizes(MM_TEXT,pDoc-> m_sizeDoc);
}
/////////////////////////////////////////////////////////////
void CDIBView::OnDraw(CDC *pDC)
{
BITMAPINFOHEADER *lpDIBHdr;//位圖信息頭結(jié)構(gòu)指針;
BYTE *lpDIBBits;//指向位圖像素灰度值的指針;
BOOL bSuccess=FALSE;
CPalette*OldPal=NULL;//調(diào)色板指針;
HDC hDC=pDC->GetSafeHdc();//獲取當(dāng)前設(shè)備上下文的句柄;
CDIBDoc *pDoc=GetDocument();//獲取活動(dòng)文檔的指針;
If(pDoc->m_hDIB ==NULL)
{//判斷圖像數(shù)據(jù)是否為空;
AfxMessageBox("圖像數(shù)據(jù)不能為空,請(qǐng)首先讀取圖像數(shù)據(jù)!");
return;
}
lpDIBHdr=( BITMAPINFOHEADER *)GlobalLock(pDoc->m_hDIB);//得到圖像的位圖頭信息
lpDIBBits=lpDIBHdr+sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD);//獲取保存圖像像素值的緩沖區(qū)的指針;
if(pDoc-> m_palDIB)
{//如果存在調(diào)色板信息,實(shí)現(xiàn)邏輯調(diào)色板;
OldPal=pDC-> SelectPalette(pDoc-> m_palDIB,TRUE);
PDC->RealizePalette();
}
else
{
AfxMessageBox("圖像的調(diào)色板數(shù)據(jù)不能為空,請(qǐng)首先讀取調(diào)色板信息!");
return ;
}
SetStretchBltMode(hDC,COLORONCOLOR);
//顯示圖像
BSuccess=StretchDIBBits(hDC,0,0,pDoc-> m_sizeDoc.cx, pDoc-> m_sizeDoc.cy,
0, pDoc-> m_sizeDoc.cy,0, pDoc-> m_sizeDoc.cy,
lpDIBBits,(LPBITMAPINFO)lpDIBHdr,
DIB_RGB_COLORS,
SRCCOPY);
GlobalUnlock(pDoc->m_hDIB);
If(OldPal)//恢復(fù)調(diào)色板;
PDC->SelectPalette(OldPal,FALSE);
retrun;
}

  四、 小結(jié)

  在本期講座里我們主要介紹了如何操作灰度位圖,它具有較強(qiáng)的代表性,同時(shí)為后續(xù)的圖像處理編程的學(xué)習(xí)作了必要的準(zhǔn)備工作,經(jīng)過學(xué)習(xí),對(duì)于如何操作其它類型的BMP格式的圖像文件,可以達(dá)到舉一反三的作用。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
CDC::PolyDraw() 小例子
VC中CDC與HDC的區(qū)別以及二者之間的轉(zhuǎn)換
使用CDC的四個(gè)派生類CClientDC,CPaintDC,CWindowDC,CMetaFileD
今天在學(xué)習(xí)用內(nèi)存DC畫圖,終于有了初步了解。現(xiàn)將收集的關(guān)于內(nèi)存DC介紹及其相關(guān)操作的資料貼出來共享一下。
CClientDC?和?CDC?的區(qū)別
pDC->m_hDC
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服