注意有个地方需要把IDC_STATIC_VIDEO的Window坐标转换成相对于Dialog左上角的坐标IDB_BITMAP1是位图ID
void CBuildingInfoPublishDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CPaintDC dc(this); // device context for painting
CRect rect;
GetDlgItem(IDC_STATIC_VIDEO)->GetWindowRect(&rect);
ScreenToClient(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
if(bmpBackground.LoadBitmap(IDB_BITMAP1))
{ //保证加载图片成功后再执行以下操作
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&dcMem,0,0,
bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
}
CDialog::OnPaint();
}
}
另一种方法
//一):首先获取静态文本框大小
CRect rect;
GetDlgItem(IDC_STATIC_PIC1)->GetWindowRect(&rect);
// 二):使用LoadImage从文件读取指定大小位图
HBITMAP hBmp= (HBITMAP)::LoadImage(NULL,"E:\\optechwell\\B-卜总\\图像处理\\ImageTest\\ImageTest\\pic\\pic1.bmp",IMAGE_BITMAP,rect.Width(),rect.Height(),LR_LOADFROMFILE);
// 三):修改文本框类型及向文本框加载位图
CStatic* pWnd = (CStatic*)GetDlgItem(IDC_STATIC_PIC1);
pWnd-> ModifyStyle(0, SS_BITMAP);
pWnd-> SetBitmap(hBmp);