下面的代码,不使用MFC得CBitmap CDC 怎么做?BITMAPFILEHEADER bfh;
memset( &bfh, 0, sizeof( bfh ) );
bfh.bfType = 'MB';
bfh.bfSize = sizeof( bfh ) + BufferSize + sizeof( BITMAPINFOHEADER );
bfh.bfOffBits = sizeof( BITMAPINFOHEADER ) + sizeof( BITMAPFILEHEADER );DWORD Written = 0;
WriteFile( hf, &bfh, sizeof( bfh ), &Written, NULL );BITMAPINFOHEADER bih;
memset( &bih, 0, sizeof( bih ) );
bih.biSize = sizeof( bih );
bih.biWidth = Width;
bih.biHeight = Height;
bih.biPlanes = 1;
bih.biBitCount = 24;CBitmap *m_pMemBmp = NULL;
CBitmap *m_pOldBmp = NULL;
CDC *m_pMemDC = new CDC();
CDC *pDC = GetDC();m_pMemDC->CreateCompatibleDC(pDC);m_pMemBmp = new CBitmap();
m_pMemBmp->CreateCompatibleBitmap(pDC, bih.biWidth+10, bih.biHeight+10);
ReleaseDC(pDC);
m_pOldBmp = m_pMemDC->SelectObject(m_pMemBmp);
m_pMemDC->FillSolidRect(0, 0, bih.biWidth+10, bih.biHeight+10, RGB(255, 255, 255));SetDIBits(m_pMemDC->GetSafeHdc(), (HBITMAP)m_pMemBmp->m_hObject,
0, bih.biHeight, (LPVOID)pBuffer, (BITMAPINFO*)&bih, DIB_RGB_COLORS);
CString strOut = "";
strOut.Format("%d", iNum);HFONT hf1;
LOGFONT lf; strcpy( lf.lfFaceName, "Arial" );
lf.lfOrientation=0;
lf.lfItalic=FALSE;
lf.lfWeight=FW_NORMAL;
lf.lfStrikeOut=FALSE;
lf.lfQuality=DRAFT_QUALITY;
lf.lfUnderline=FALSE;
lf.lfEscapement=0;
lf.lfWidth = 20;
lf.lfHeight = 20;
lf.lfEscapement=0;
hf1=CreateFontIndirect(&lf);
m_pMemDC->SelectObject(hf1);//*/
m_pMemDC->SetBkMode(TRANSPARENT);
m_pMemDC->SetTextColor(0x00FF00 );
m_pMemDC->TextOut(10, 10, strOut);int nCount = GetDIBits(m_pMemDC->GetSafeHdc(),
(HBITMAP)m_pMemBmp->m_hObject, 0, bih.biHeight,
(LPVOID)pTemp, (BITMAPINFO*)&bih, DIB_RGB_COLORS);
memset( &bfh, 0, sizeof( bfh ) );
bfh.bfType = 'MB';
bfh.bfSize = sizeof( bfh ) + BufferSize + sizeof( BITMAPINFOHEADER );
bfh.bfOffBits = sizeof( BITMAPINFOHEADER ) + sizeof( BITMAPFILEHEADER );DWORD Written = 0;
WriteFile( hf, &bfh, sizeof( bfh ), &Written, NULL );BITMAPINFOHEADER bih;
memset( &bih, 0, sizeof( bih ) );
bih.biSize = sizeof( bih );
bih.biWidth = Width;
bih.biHeight = Height;
bih.biPlanes = 1;
bih.biBitCount = 24;CBitmap *m_pMemBmp = NULL;
CBitmap *m_pOldBmp = NULL;
CDC *m_pMemDC = new CDC();
CDC *pDC = GetDC();m_pMemDC->CreateCompatibleDC(pDC);m_pMemBmp = new CBitmap();
m_pMemBmp->CreateCompatibleBitmap(pDC, bih.biWidth+10, bih.biHeight+10);
ReleaseDC(pDC);
m_pOldBmp = m_pMemDC->SelectObject(m_pMemBmp);
m_pMemDC->FillSolidRect(0, 0, bih.biWidth+10, bih.biHeight+10, RGB(255, 255, 255));SetDIBits(m_pMemDC->GetSafeHdc(), (HBITMAP)m_pMemBmp->m_hObject,
0, bih.biHeight, (LPVOID)pBuffer, (BITMAPINFO*)&bih, DIB_RGB_COLORS);
CString strOut = "";
strOut.Format("%d", iNum);HFONT hf1;
LOGFONT lf; strcpy( lf.lfFaceName, "Arial" );
lf.lfOrientation=0;
lf.lfItalic=FALSE;
lf.lfWeight=FW_NORMAL;
lf.lfStrikeOut=FALSE;
lf.lfQuality=DRAFT_QUALITY;
lf.lfUnderline=FALSE;
lf.lfEscapement=0;
lf.lfWidth = 20;
lf.lfHeight = 20;
lf.lfEscapement=0;
hf1=CreateFontIndirect(&lf);
m_pMemDC->SelectObject(hf1);//*/
m_pMemDC->SetBkMode(TRANSPARENT);
m_pMemDC->SetTextColor(0x00FF00 );
m_pMemDC->TextOut(10, 10, strOut);int nCount = GetDIBits(m_pMemDC->GetSafeHdc(),
(HBITMAP)m_pMemBmp->m_hObject, 0, bih.biHeight,
(LPVOID)pTemp, (BITMAPINFO*)&bih, DIB_RGB_COLORS);
谢谢
BITMAPFILEHEADER bfh;
memset( &bfh, 0, sizeof( bfh ) );
bfh.bfType = 'MB';
bfh.bfSize = sizeof( bfh ) + BufferSize + sizeof( BITMAPINFOHEADER );
bfh.bfOffBits = sizeof( BITMAPINFOHEADER ) + sizeof( BITMAPFILEHEADER );
BITMAPINFOHEADER bih;
memset( &bih, 0, sizeof( bih ) );
bih.biSize = sizeof( bih );
bih.biWidth = Width;
bih.biHeight = Height;
bih.biPlanes = 1;
bih.biBitCount = 24;HDC hdcSrc = CreateCompatibleDC(NULL);HDC hdcDst = CreateCompatibleDC(NULL);HBITMAP hBitMap = NULL;
hBitMap = CreateCompatibleBitmap( hdcDst, bih.biWidth, bih.biHeight );SelectObject( hdcDst, hBitMap);int isr = SetDIBits(hdcDst, hBitMap,
0, bih.biHeight, (LPVOID)pBuffer, (BITMAPINFO*)&bih, DIB_RGB_COLORS);
RECT rcTmp;
SetRect(&rcTmp, 0, 0, bih.biWidth, bih.biHeight); DrawText(hdcDst, "1", 1, &rcTmp, DT_TOP);int nCount = GetDIBits(hdcDst,
hBitMap, 0, bih.biHeight,
(LPVOID)pTemp, (BITMAPINFO*)&bih, DIB_RGB_COLORS);