扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:刘涛 来源:作者授权转载 2007年10月21日
关键字:
///////////////////////////////////////////////////////////// void CDIBView::OnInitialUpdate() { CscrollView::OnInitalUpdate(); CDIBDoc *pDoc=GetDocument(); If(pDoc->m_hDIB==NULL)//如果位图数据为空,设置m_sizeDoc的默认尺寸; pDoc->m_sizeDoc.cx=pDoc->m_sizeDoc.cy=100; SetScrollSizes(MM_TEXT,pDoc-> m_sizeDoc); } ///////////////////////////////////////////////////////////// void CDIBView::OnDraw(CDC *pDC) { BITMAPINFOHEADER *lpDIBHdr;//位图信息头结构指针; BYTE *lpDIBBits;//指向位图像素灰度值的指针; BOOL bSuccess=FALSE; CPalette*OldPal=NULL;//调色板指针; HDC hDC=pDC->GetSafeHdc();//获取当前设备上下文的句柄; CDIBDoc *pDoc=GetDocument();//获取活动文档的指针; If(pDoc->m_hDIB ==NULL) {//判断图像数据是否为空; AfxMessageBox("图像数据不能为空,请首先读取图像数据!"); return; } lpDIBHdr=( BITMAPINFOHEADER *)GlobalLock(pDoc->m_hDIB);//得到图像的位图头信息 lpDIBBits=lpDIBHdr+sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD);//获取保存图像像素值的缓冲区的指针; if(pDoc-> m_palDIB) {//如果存在调色板信息,实现逻辑调色板; OldPal=pDC-> SelectPalette(pDoc-> m_palDIB,TRUE); PDC->RealizePalette(); } else { AfxMessageBox("图像的调色板数据不能为空,请首先读取调色板信息!"); 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)//恢复调色板; PDC->SelectPalette(OldPal,FALSE); retrun; } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者