一个关于DIB逻辑调色板实现的问题
我写了一个程序,通过递增至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++;
}