在dialog上显示本地的bmp图片? RT,如何加载本地的bmp图片,并在窗体上显示,窗体的大小可以变化,图片填充整个窗体。谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://hi.baidu.com/qizlee/blog/item/093738d7366cbadca144df04.html 用GDI+ 把BMP填充到DC上就行了 CPaintDC dc(this); CRect rect; GetClientRect(&rect);//得到窗体的大小 CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.Attach ((HBITMAP)::LoadImage(NULL, c_tcDownPicPosition, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE)); BITMAP bitMap; bmpBackground.GetBitmap(&bitMap); CBitmap *pbmpOld = dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0, bitMap.bmWidth, bitMap.bmHeight, SRCCOPY);//画窗体 在paint消息里面 有问题吗 一些句柄需要卸载吗 LoadImage(); // 不过只能加载ico, cur, bmp图片StretchBlt(); 我的就是bmp的 StretchBlt();是什么意思 我的那个用错了? Bitmap * m_pImage = new Bitmap(wcImagePath);//刷到背景DC上Graphics graphics(hDC);graphics.DrawImage(m_pImage, 0, 0, rect.Width(), rect.Height()); CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1); BITMAP bmp; bitmap.GetBitmap(&bmp); CDC dcCompatible; dcCompatible.CreateCompatibleDC(pDC); dcCompatible.SelectObject(&bitmap); CRect rect; GetClientRect(&rect); pDC->SetStretchBltMode(COLORONCOLOR); //设置在指定设备内容中的伸展模式。解决失真问题。 //pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY); pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY); CPaintDC dc(this); CRect rect; GetClientRect(&rect);//得到窗体的大小 CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.Attach ((HBITMAP)::LoadImage(NULL, c_tcDownPicPosition, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE)); BITMAP bitMap; bmpBackground.GetBitmap(&bitMap); CBitmap *pbmpOld = dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0, bitMap.bmWidth, bitMap.bmHeight, SRCCOPY);//画窗体 在paint消息里面 有问题吗 一些句柄需要卸载吗 最近刚做了个程序,用到这个。。我把我的代码贴出来给对话框添加背景方法如下:1、把你的图包含到程序的“Bitmap资源”里(菜单->Insert->resource->bitmap->import->选择自己的位图就好了),提示说该资源使用了大于256色的调色板,在VC里无法编辑等等,点确定就可以 。 2、在你的 void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码 else { //CDialog::OnPaint();//要禁止这个调用 CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP); //IDB_BITMAP是你自己的图对应的ID BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); } 调试成功的,没问题的。希望对你有帮助 win7中如何获取管理员权限 VC自绘三角形按钮 为什么我新建一个界面,刚开始,要点两次才能达到最大化的效果? 用摄像头,然后写一个程序,实现类型于大头照的功能 一个图像处理的小问题 请问怎么把资源倒入另一个工程? 如何解决不确定窗口的问题 如何得到系统的分辩率? 一个菜问题 谁能推荐一个实时压缩,压缩比稍高一些的CODECs驱动? 如何修改listCtrl的背景。 请教如何动态定义二维数组,急……
CRect rect;
GetClientRect(&rect);//得到窗体的大小
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.Attach ((HBITMAP)::LoadImage(NULL, c_tcDownPicPosition, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
BITMAP bitMap;
bmpBackground.GetBitmap(&bitMap);
CBitmap *pbmpOld = dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0, bitMap.bmWidth, bitMap.bmHeight, SRCCOPY);//画窗体 在paint消息里面 有问题吗 一些句柄需要卸载吗
StretchBlt();
我的就是bmp的 StretchBlt();是什么意思 我的那个用错了?
Graphics graphics(hDC);
graphics.DrawImage(m_pImage, 0, 0, rect.Width(), rect.Height());
bitmap.LoadBitmap(IDB_BITMAP1); BITMAP bmp;
bitmap.GetBitmap(&bmp); CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC); dcCompatible.SelectObject(&bitmap); CRect rect;
GetClientRect(&rect);
pDC->SetStretchBltMode(COLORONCOLOR); //设置在指定设备内容中的伸展模式。解决失真问题。
//pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
CRect rect;
GetClientRect(&rect);//得到窗体的大小
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.Attach ((HBITMAP)::LoadImage(NULL, c_tcDownPicPosition, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));
BITMAP bitMap;
bmpBackground.GetBitmap(&bitMap);
CBitmap *pbmpOld = dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0, bitMap.bmWidth, bitMap.bmHeight, SRCCOPY);//画窗体 在paint消息里面 有问题吗 一些句柄需要卸载吗
给对话框添加背景方法如下:
1、把你的图包含到程序的“Bitmap资源”里(菜单->Insert->resource->bitmap->import->选择自己的位图就好了),提示说该资源使用了大于256色的调色板,在VC里无法编辑等等,点确定就可以 。
2、在你的 void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码
else
{
//CDialog::OnPaint();//要禁止这个调用
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect); CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP);
//IDB_BITMAP是你自己的图对应的ID BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,
bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
} 调试成功的,没问题的。希望对你有帮助