15,979
社区成员
发帖
与我相关
我的任务
分享
CreateFile("C:\\123.bmp", ...);
ReadFile(... ,Buffer, ...);
void FillBitmapInfo( BITMAPINFO* bmi, int width, int height, int bpp,)
{
//ASSERT( bmi && width >= 0 && height >= 0 && (bpp == 8 || bpp == 24 || bpp == 32))
BITMAPINFOHEADER* bmih = &(bmi->bmiHeader);
memset( bmih, 0, sizeof(*bmih));
bmih->biSize = sizeof(BITMAPINFOHEADER);
bmih->biWidth = width;
bmih->biHeight = height ;
bmih->biPlanes = 1;
bmih->biBitCount = (unsigned short)bpp;
bmih->biCompression = BI_RGB;
if( bpp == 8 )
{
RGBQUAD* palette = bmi->bmiColors;
int i;
for( i = 0; i < 256; i++ )
{
palette[i].rgbBlue = palette[i].rgbGreen = palette[i].rgbRed = (BYTE)i;
palette[i].rgbReserved = 0;
}
}
}
void DrawBuff(HDC hDC,int lleft,int lTop,DWORD dwWidth, DWORD dwHeight,BYTE *Buffer)
{
static BITMAPINFO bitmapInfo;
FillBitmapInfo(&bitmapInfo,dwWidth,dwHeight,16);
::StretchDIBits(
hDC,
lleft,lTop,dwWidth, dwHeight,
0, 0, dwWidth,dwHeight,
Buffer, &bitmapInfo, DIB_RGB_COLORS, SRCCOPY );
}
void FillBitmapInfo( BITMAPINFO* bmi, int width, int height, int bpp, int origin )
{
//ASSERT( bmi && width >= 0 && height >= 0 && (bpp == 8 || bpp == 24 || bpp == 32));
BITMAPINFOHEADER* bmih = &(bmi->bmiHeader);
memset( bmih, 0, sizeof(*bmih));
bmih->biSize = sizeof(BITMAPINFOHEADER);
bmih->biWidth = width;
bmih->biHeight = origin ? abs(height) : -abs(height);
bmih->biPlanes = 1;
bmih->biBitCount = (unsigned short)bpp;
bmih->biCompression = BI_RGB;
if( bpp == 8 )
{
RGBQUAD* palette = bmi->bmiColors;
int i;
for( i = 0; i < 256; i++ )
{
palette[i].rgbBlue = palette[i].rgbGreen = palette[i].rgbRed = (BYTE)i;
palette[i].rgbReserved = 0;
}
}
}
void DrawBuff(HDC hDC,int lleft,int lTop,DWORD dwWidth, DWORD dwHeight,BYTE *Buffer)
{
static BITMAPINFO bitmapInfo;
FillBitmapInfo(&bitmapInfo,dwWidth,dwHeight,16,bInverse);
::StretchDIBits(
hDC,
lleft,lTop,dwWidth, dwHeight,
0, 0, dwWidth,dwHeight,
Buffer, &bitmapInfo, DIB_RGB_COLORS, SRCCOPY );
}
OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
HBITMAP hBitmap;
hBitmap=(HBITMAP)LoadImage(
::AfxGetInstanceHandle(),"res\\xxx.bmp",
IMAGE_BITMAP,0,0,
LR_LOADFROMFILE|LR_CREATEDIBSECTION);
ASSERT( hBitmap);
HBITMAP hOldBitmap;
CDC MemDC;
CRect rect;
CDC *pDC=this->GetDC();
MemDC.CreateCompatibleDC(pDC);
GetClientRect(rect);
hOldBitmap=(HBITMAP)MemDC.SelectObject(hBitmap);
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
MemDC.SelectObject(hOldBitmap);
}