void CViewDIBView::OnChangepal()
{
CViewDIBDoc* pDoc=GetDocument();
BITMAPINFO* bmi=(BITMAPINFO*)GlobalLock(pDoc->m_pDib->m_hDib);
if(bmi==NULL) AfxMessageBox("bmi is null");
for(int i=0;i<256;i++)
{
bmi->bmiColors[i].rgbRed=0;
bmi->bmiColors[i].rgbGreen=0;
bmi->bmiColors[i].rgbBlue=0;
bmi->bmiColors[i].rgbReserved=PC_RESERVED;
}
GlobalUnlock(pDoc->m_pDib->m_hDib);
CPalette* palette=pDoc->m_pDib->GetPalette();
CClientDC pDC(this);
CPalette* oldpalette=pDC.SelectPalette(palette,true);
GetDocument()->UpdateAllViews(NULL);
pDC.SelectPalette(oldpalette,true);
}
程序想实现改变调色板从而改变图像显示,CViewDIBDoc中有public的cdib类指针m_pDib,cdib类有m_hDib句柄,指向图像,我把调色板都写成黑,图像也应显示黑,可是运行结果仍然是原来的图片,请高人指点。
{
CViewDIBDoc* pDoc=GetDocument();
BITMAPINFO* bmi=(BITMAPINFO*)GlobalLock(pDoc->m_pDib->m_hDib);
if(bmi==NULL) AfxMessageBox("bmi is null");
for(int i=0;i<256;i++)
{
bmi->bmiColors[i].rgbRed=0;
bmi->bmiColors[i].rgbGreen=0;
bmi->bmiColors[i].rgbBlue=0;
bmi->bmiColors[i].rgbReserved=PC_RESERVED;
}
GlobalUnlock(pDoc->m_pDib->m_hDib);
CPalette* palette=pDoc->m_pDib->GetPalette();
CClientDC pDC(this);
CPalette* oldpalette=pDC.SelectPalette(palette,true);
GetDocument()->UpdateAllViews(NULL);
pDC.SelectPalette(oldpalette,true);
}
程序想实现改变调色板从而改变图像显示,CViewDIBDoc中有public的cdib类指针m_pDib,cdib类有m_hDib句柄,指向图像,我把调色板都写成黑,图像也应显示黑,可是运行结果仍然是原来的图片,请高人指点。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货