如何显示位图?
- CDC Dc;
- if(Dc.CreateCompatibleDC(pDC)==FALSE)
- AfxMessageBox("Can't create DC");
- Dc.SelectObject(&m_bitmap);
- pDC->BitBlt(10,10,500,500,&Dc,200,100,SRCCOPY);
- -----------------------另一种方式
- 直接加载外部 bmp, ico, cur
- CXXX::OnPaint()
- {
- CPaintDC dc(this);
- CDC dcMem;
- CBitmap Bitmap ;
- HBITMAP hBitmap ;
- CRect rect ;
- GetClientRect( &rect ) ;
- // 加载外部文件
- hBitmap = (HBITMAP)::LoadImage(0, _T("D:\\test.bmp"), IMAGE_BITMAP, 0, 0
- , LR_LOADFROMFILE);
- if ( hBitmap == NULL )
- return ;
- Bitmap.Attach( hBitmap );
- // 把位图选入内存描述表
- dcMem.CreateCompatibleDC( &dc ) ;
- dcMem.SelectObject( & Bitmap );
- // 显示位图
- // dcMem
- dc.BitBlt( 0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0, SRCCOPY );
- }
显示RGB数据
CPaintDC dc(this);
ConvertRGB24RToRGB24(g_pImageSrc,g_sRGB,m_nPicWidth,m_nPicHeight); //倒转
DWORD dwBmpHdr = sizeof(BITMAPINFO);
BITMAPINFO m_bmphdr;
m_bmphdr.bmiHeader.biBitCount = 24;
m_bmphdr.bmiHeader.biClrImportant = 0;
m_bmphdr.bmiHeader.biSize = dwBmpHdr;
m_bmphdr.bmiHeader.biSizeImage = 0;
m_bmphdr.bmiHeader.biWidth = m_nPicWidth;
m_bmphdr.bmiHeader.biHeight = m_nPicHeight;
m_bmphdr.bmiHeader.biXPelsPerMeter = 0;
m_bmphdr.bmiHeader.biYPelsPerMeter = 0;
m_bmphdr.bmiHeader.biClrUsed = 0;
m_bmphdr.bmiHeader.biPlanes = 1;
m_bmphdr.bmiHeader.biCompression = BI_RGB;
int nResult = ::StretchDIBits(dc.m_hDC,0,0,m_nPicWidth,m_nPicHeight, 0, 0,m_nPicWidth, m_nPicHeight,g_sRGB,
(BITMAPINFO*)&m_bmphdr,DIB_RGB_COLORS, SRCCOPY);