我将一个256色dib位图读入内存后,修改了dib头的调色板数据。
代码如下:
// 指向DIB的指针
LPSTR lpDIB; // 指向BITMAPINFO结构的指针
LPBITMAPINFO lpbmi;
// 获取指向BITMAPINFO结构的指针)
lpbmi = (LPBITMAPINFO)lpDIB;
for (i = 0; i < 256; i ++)
{
// 更新DIB调色板红色分量
lpbmi->bmiColors[i].rgbRed = i;
// 更新DIB调色板绿色分量
lpbmi->bmiColors[i].rgbGreen = i;
// 更新DIB调色板蓝色分量
lpbmi->bmiColors[i].rgbBlue = i;
// 更新DIB调色板保留位
lpbmi->bmiColors[i].rgbReserved = 0;
}
为什么我把以下两条语句注释掉,不执行,图像照样会变色。照理说调色板
根本就没有实现,图像就不会有任何变化呀?? 请哪位同仁指点迷津!!/* // 替换当前调色板为灰度调色板
pDoc->GetDocPalette()->SetPaletteEntries(0, 256, (LPPALETTEENTRY) ColorsTable[5]);
// 实现新的调色板
OnDoRealize((WPARAM)m_hWnd,0); //其中调用了RealizePalette()
*/
解决方案 »
- vs2008有没有这样一个功能(函数)?
- MFC菜鸟请问,下面是一个网上找的绘图程序,它里面的Draw和OnPaint函数,请问能在这两个函数里面改一下,改成双缓存画图吗?请高手指点。
- postmessage()中的消息映射方法为什么没有执行
- [寻找]类似自由门那种,通过某个端口进行Web调用的例子
- [DLL]这种情况该怎么办?
- ON_COMMAND_RANGE()中的消息映射错乱,急等帮忙分析!!
- 怎么接收函数中传出来的Variant变量??????
- 菜鸟问题,如何在两个窗口之间进行切换呀?!送分100
- 在模态对话框出现之前初始化对话框,有办法吗?
- 关于单文档程序定时器的问题
- 关于FORMVIEW类的SWITCHTOVIEW
- 分布式的进程之间通讯
256色的DIB(就是说肯定有COLOR TABLE),它干脆直接从像素中读取偏移
量,再在COLOR TABLE中找到颜色就显示了。