一个关于DIB逻辑调色板实现的问题

lzr4304061988012 lzr4304061988012 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我写了一个程序,通过递增至DIB的颜色表项值创建了逻辑调色板,实现到系统调色板时,显示时图象并没有出现颜色渐变至图象本色的效果,不知道为什么?
而且调试时,发现REALIZEPALETTE()返回值是0,那不是说明系统调色板没有改变一项吗?不懂!(其实就是个实现DIB渐显的小程序)
while(count<10)
{
Invalidate(1);
for (i = 0; i < (int)wNumColors; i++)
{
lpPal->palPalEntry[i].peRed = evenDIB[i].r-(lpbmi->bmiColors[i].rgbRed)/10;
lpPal->palPalEntry[i].peGreen = evenDIB[i].g-(lpbmi->bmiColors[i].rgbGreen)/10;
lpPal->palPalEntry[i].peBlue = evenDIB[i].b-(lpbmi->bmiColors[i].rgbBlue)/10;
lpPal->palPalEntry[i].peFlags = 0;

}
evenDIB[i].r+=(lpbmi->bmiColors[i].rgbRed)/10;
evenDIB[i].g+=(lpbmi->bmiColors[i].rgbGreen)/10;
evenDIB[i].b+=(lpbmi->bmiColors[i].rgbBlue)/10;

if(m_palDIB)
{
delete m_palDIB;
m_palDIB=NULL;
}
m_palDIB=new CPalette;
if(!(m_palDIB->CreatePalette(lpPal)))
return ;
CPalette *m_oldPal=dc.SelectPalette(m_palDIB,FALSE);
dc.RealizePalette;/返回值是0??????????
return ;

dc.SelectPalette(m_oldPal,FALSE);
CRect rectDIB;
rectDIB.left=0;
rectDIB.right=::DIBWidth(lpbi);
rectDIB.bottom=::DIBHeight(lpbi);
rectDIB.top=0;
::PaintDIB(dc.GetSafeHdc(),&rectDIB,m_hDIB,&rectDIB,m_palDIB);
Pause();
count++;
}
...全文

相关推荐

数字图像处理 DIB的读取与显示VC源代码

在"ViewDIB"源代码中,可能包含了一个名为CViewDIB的类,它是MFC框架中的CView类的派生类,用于处理图像显示。此类通常会覆盖OnDraw()成员函数,以实现自定义的绘图逻辑。

zhengyimai

Windows DIB位图与调色板深度解析工具

DIB(设备无关位图)是Windows图形子系统中底层图像表示的核心二进制格式,其结构合规性直接决定色彩还原精度与跨平台渲染稳定性。理解BITMAPINFOHEADER字段语义、biBitCount与调色板存在性逻辑、RGBQUAD字节序及rgbReserved的Alpha/保留双重角色,是规避GDI渲染失真、内存越界与工业HMI色彩漂移的关键。该技术广泛应用于医疗影像预处理、嵌入式HMI开发、PLC人机界面维护及Windows CE设备图形适配等对渲染可追溯性要求严苛的工程场景。enh_diblook作为

圆角骑士魔理沙

用VisualC_实现基于数学形态学的数字图像处理

在BMP文件格式中,可以通过构建一个特殊的256色调色板,其中每个条目的RGB值相同,以此来实现灰度图像的存储和显示。

hanson1030

windows程序设计

- **实现剪贴板浏览器**:讲解如何设计和实现一个剪贴板浏览工具。**13. 使用打印机**- **打印入门**:介绍打印的基本概念及其在Windows程序设计中的实现方法。

jackvs

Windows DIB位图底层渲染与调色板实战解析

设备独立位图(DIB)是Windows图形子系统中图像数据交换的基础抽象,其核心在于BITMAPINFOHEADER结构、RGBQUAD调色板映射及扫描线内存布局。理解DIB需掌握位图头校验、调色板动态构建、像素解包对齐与StretchDIBits渲染原理,这些技术支撑着GDI图像显示、嵌入式GUI兼容层及老旧MFC图像控件的实现。在缺乏现代封装库的受限环境或逆向兼容场景中,裸调GDI API处理BMP文件具备不可替代的工程价值。enh_diblook作为可调试的DIB渲染样本,完整覆盖1/4/8/24/3

RED韵
评论 13
收藏 已收藏
分享
返回顶部