版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haimianjie2012/article/details/81913148
HDC* CImageShow::InitShowDC(void)
{
DeleteAppointedDC(&m_hShowDC);
m_hShowDC = ::CreateCompatibleDC(this->GetDC()->GetSafeHdc());
return &m_hShowDC;
}
CDC* pDC = m_ImgShow.GetDC();
BYTE m_DispColorMap[256][3]; // 颜?色|?表à¨a
////颜?色|?生|¨2成¨|
void MakeNewColor(int Sel ,BYTE NewColorTable[256][3])
{
int i;
// BYTE r,g,b;
for(i =0 ; i < 256; i ++)
{
NewColorTable[i][0] = 0;
NewColorTable[i][1] = 0;
NewColorTable[i][2] = 0;
}
switch(Sel)
{
case 0:
for(i =0 ; i < 256; i ++)
{
NewColorTable[i][0] = CaisiColorBar[i][0];
NewColorTable[i][1] = CaisiColorBar[i][1];
NewColorTable[i][2] = CaisiColorBar[i][2];
}
break;
case 1://黑¨2白??á色|?标à¨o
for(i =0 ; i < 256; i ++)
{
NewColorTable[i][0] = BlackWhiteColorBar[i][0];
NewColorTable[i][1] = BlackWhiteColorBar[i][1];
NewColorTable[i][2] = BlackWhiteColorBar[i][2];
}
break;
}
}
void CreateDispBmpData(CDC *pDC,CRect rc,int **tmpdata,int RefShowW,int RefShowH ,BYTE MapColor[256][3] , HDC *hdcMem
,bool falg)
{
if ( pDC == NULL || tmpdata == NULL || hdcMem == NULL )
return ;
int i,j;
int tmpw ,tmph;
//int Disp_W,Disp_H;
// 原-数oy据Y大?¨?小?的ì?宽¨a高?
tmpw = RefShowW /2 *2;
tmph = RefShowH /2 *2;
#if 1
BYTE *pbyDisplayData = NULL;
ReSize1dDataPointer( pbyDisplayData , tmpw * tmph * 3);
if(!pbyDisplayData)
{
return;
}
for (i = 0; i < tmpw; i++ )
{
BYTE d;
for (j = 0; j < tmph ; j++)
{
d = tmpdata[i][j]; // data
int m = j *tmpw * 3 + i * 3;
pbyDisplayData[m] = MapColor[d][2];
pbyDisplayData[m + 1] = MapColor[d][1];
pbyDisplayData[m + 2] = MapColor[d][0];
}
}
HBITMAP hbmBMP = CreateCompatibleBitmap(pDC->m_hDC, tmpw, tmph );
HGDIOBJ holdBmp = ::SelectObject(*hdcMem, hbmBMP);
char image_info[sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)];
BITMAPINFOHEADER *pbmiHeader = (BITMAPINFOHEADER*)image_info;
pbmiHeader->biSize = sizeof(BITMAPINFOHEADER);
pbmiHeader->biWidth = tmpw;
pbmiHeader->biHeight = tmph;
pbmiHeader->biPlanes = 1;
pbmiHeader->biBitCount = 24;
pbmiHeader->biCompression = BI_RGB;
pbmiHeader->biSizeImage = tmpw*tmph*3;
pbmiHeader->biXPelsPerMeter = 0;
pbmiHeader->biYPelsPerMeter = 0;
pbmiHeader->biClrUsed = 0;
pbmiHeader->biClrImportant = 0;
SetDIBits(*hdcMem, hbmBMP, 0, pbmiHeader->biHeight, pbyDisplayData, (BITMAPINFO*)pbmiHeader, DIB_RGB_COLORS);
DeleteObject(hbmBMP);
ReSize1dDataPointer( pbyDisplayData , 0 );
#endif
}