以下内容WinCE5.0平台下,VS2008编译测试通过
1. 按钮上显示位图
CString strPath = _T(".//bmp//test.bmp");
CRect buttRect;
m_Test.GetClientRect(&buttRect);
HBITMAP hBmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), strPath,
IMAGE_BITMAP, buttRect.Width(), buttRect.Height(),
LR_LOADFROMFILE|LR_CREATEDIBSECTION);
m_Test.SetBitmap(hBmp);
2. 对话框显示位图
CBitmap bmp;
HBITMAP hBmp;
CString strPath = _T(".//bmp//test.bmp");
hBmp = (HBITMAP)::LoadImage(::AfxGetInstanceHandle(), strPath,
IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
bmp.Attach(hBmp);
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
CRect clientRect;
GetClientRect(&clientRect);
clientRect.NormalizeRect();
CDC dcMem;
dcMem.CreateCompatibleDC(GetDC());
CBitmap *pBmp = (CBitmap *)dcMem.SelectObject(bmp);
CDC *pDC = GetDC();
SetStretchBltMode(pDC->GetSafeHdc(), HALFTONE);
SetBrushOrgEx(pDC->GetSafeHdc(), 0, 0, NULL);
pDC->StretchBlt(clientRect.left, clientRect.top, clientRect.Width(),
clientRect.Height(), &dcMem, 0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, SRCCOPY);
ReleaseDC(pDC);
DeleteDC(dcMem);
DeleteObject(hBmp);
3. CStatic控件显示位图
方法1:
{
CString strPath = _T(".//bmp//test.bmp");
CRect buttRect;
CStatic *pStatic = (CStatic *)GetDlgItem(IDC_STATIC_001);
pStatic->MoveWindow(0, 0, 300, 200); //改变控件大小
pStatic->ModifyStyle(0xF, SS_BITMAP|SS_CENTERIMAGE);
pStatic->GetClientRect(&buttRect);
HBITMAP hBmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), strPath,
IMAGE_BITMAP, buttRect.Width(), buttRect.Height(),
LR_LOADFROMFILE|LR_CREATEDIBSECTION);
pStatic->SetBitmap(hBmp);
}
方法 2:
{
CStatic *pStatic=(CStatic *)GetDlgItem(IDC_STATIC_001);
pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
CBitmap bitmap;
CBrush brush;
brush.CreateSolidBrush(RGB(255, 70, 0));
CClientDC dc(this);
CDC MemDC;
size_t m_width = 200;
size_t m_height = 150;
bitmap.CreateCompatibleBitmap(&dc, m_width/4.0, m_height/4.0);
MemDC.CreateCompatibleDC(&dc);
CBitmap *oldBmp = (CBitmap*)MemDC.SelectObject(&bitmap);
MemDC.Rectangle(CRect(0, 0, m_width/4.0, m_height/4.0));
MemDC.FillRect(CRect(0, 0, m_width, m_height), &brush);
MemDC.SelectObject(oldBmp);
MemDC.DeleteDC();
pStatic->SetBitmap((HBITMAP)bitmap.Detach());
}