/*
只显示单通道灰度图
pImageData:图像指针(单通道8位)
imageW:宽
imageH:高
ctrId:icture Control ID
*/
int CImageWindowDlg::ShowArrImg(UINT8* pImageData, int imageW, int imageH, int ctrId)
{
CImage cimg;
cimg.Create(imageW, imageH, 8);
for (int i = 0; i < imageH; i++)
{
byte* ptrlmg = (byte*)cimg.GetPixelAddress(0, i);
for (int j = 0; j < imageW; j++)
{
ptrlmg[j] = pImageData[i*imageW + j];
}
}
//设置调色板程序,否者无法设置颜色。256灰度级
RGBQUAD rgbQuad[256];
for (int i = 0; i < 256; ++i)
{
rgbQuad[i].rgbBlue = i;
rgbQuad[i].rgbGreen = i;
rgbQuad[i].rgbRed = i;
rgbQuad[i].rgbReserved = 0;
}
cimg.SetColorTable(0, 256, rgbQuad);
CRect rect;
GetDlgItem(ctrId)->GetWindowRect(&rect);//将窗口矩形选中到picture控件上
ScreenToClient(&rect);//将客户区选中到Picture控件表示的矩形区域内
GetDlgItem(ctrId)->MoveWindow(rect.left, rect.top, imageW, imageH, TRUE);//将窗口移动到Picture控件表示的矩形区域
CWnd *pWnd = GetDlgItem(ctrId);//获得pictrue控件窗口的句柄
pWnd->GetClientRect(&rect);//获得pictrue控件所在的矩形区域
CDC *pDC = pWnd->GetDC();//获得pictrue控件的DC
cimg.Draw(pDC->m_hDC, rect); //将图片画到Picture控件表示的矩形区域
ReleaseDC(pDC);//释放picture控件的DC
return 0;
}
MFC控件Picture Control显示图片
于 2023-09-05 09:59:25 首次发布