VC++数字图像处理编程(15)

时间:2026-01-16   来源:未知    
字号:

m_palDIB=new Cpalette;

pPal->palVersion=0x300;

pPal->palNumEntries=256;

for(int i=0;i<256;i++)

{//每个颜色表项的R、G、B值相等,并且各个值从"0"到"255"序列展开; Pal->palPalentry[i].peRed=i;

pPal->palPalentry[i].peGreen=i;

pPal->palPalentry[i].peBlue=i;

pPal->palPalentry[i].peFlags=0;

}

m_palDIB->CreatePalette(pPal);

.......................

}

三、 图像的显示

显示DIB位图数据可以通过设备上下文CDC对象的成员函数CDC::Bitblt()或CDC::StretchBlt()来实现,也可以通过API函数SetDIBBitsToDevice()或StretchDIBBits()来实现,函数中具体所用到的各个参数的意义可以参考 MSDN。其中StretchDIBBits()和CDC::StretchBlt()可以将图像进行放大和缩小显示。当从文档中装入位图文件时, CDIBView类的OnInitialUpdate函数将被调用,因此可以在该函数中实现对视图尺寸的设置,用于正确的显示位图,然后就可以在视图类的 OnDraw()函数中正确的显示位图了。这两个函数的具体实现代码分别如下所示:

///////////////////////////////////////////////////////////// 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)

VC++数字图像处理编程(15).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:19 元/月 原价:99元
低至 0.1 元/份 每月下载300
全站内容免费自由复制
VIP包月下载
特价:19 元/月 原价:99元
低至 0.1 元/份 每月下载300
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)