第一范文网 - 专业文章范例文档资料分享平台

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

来源:用户分享 时间:2021-04-05 本文由拧巴小姐 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

return FALSE; // must be a new document

CPalette* pPal = pDoc->m_palDIB;

//调色板的颜色表数据在InitDIBData()函数中实现

if (pPal != NULL)

{

CMainFrame* pAppFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;//得到程序的主框架指针;

ASSERT_KINDOF(CMainFrame, pAppFrame);

CClientDC appDC(pAppFrame);//获取主框架的设备上下文;

CPalette* oldPalette = appDC.SelectPalette(pPal, ((HWND)wParam) != m_hWnd);

//只有活动视才可以设为"FALSE",即根据活动视的调色板设为"前景"调色板; if (oldPalette != NULL)

{

UINT nColorsChanged = appDC.RealizePalette();//实现系统调色板 if (nColorsChanged > 0)

pDoc->UpdateAllViews(NULL);//更新视图

appDC.SelectPalette(oldPalette, TRUE);

//将原系统调色板置为背景调色板

}

else

{

TRACE0("\\tSelectPalette failed in");

}

return TRUE;

}

注:在调用API函数显示位图时,不要忘记设置逻辑调色板,即"背景"调色板,否则位图将无法正确显示,读者可以从后面的显示部分的实现看出我们在显示时实现了逻辑调色板。上述的处理相对来说比较繁琐复杂,可能对于初学者来说也比较难于理解,所以如果我们的程序仅仅限于处理灰度图象,可以采用另外一种相对简单的办法,即在文档类的初始化阶段定义一个灰度调色板,然后在设备上下文中实现它,这样作的好处是在度取灰度位图时可以不再考虑文件中的颜色表信息,提高了文件读取速度,笔者在开发一个基于机器视觉的项目时采用的就是这种方法,取的了比较满意的效果。首先定义一个指向逻辑颜色表结构 LOGPALETTE的指针pPal,填充该指针,然后将该指针与调色板指针联系起来,该方法的具体实现如下:

/////////////////////////////////////////////////////////

CDibDoc::CDibDoc()

{

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

LOGPALETTE *Pal;

Pal=new LOGPALETTE;

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新高中教育VC++数字图像处理编程(14)全文阅读和word下载服务。

VC++数字图像处理编程(14).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1181561.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top