19,468
社区成员
发帖
与我相关
我的任务
分享
CClientDC dc(this);//显示DC,只是想用来查看得到的DC是不是我想要的
CDC pScreenDc;//我真正想要的DC,其图片大小为192x192大小
pScreenDc.CreateCompatibleDC(NULL);
CDC pMemDc;//内存DC,用来存放导入的BMP文件
pMemDc.CreateCompatibleDC(NULL);
HBITMAP hBitMap = (HBITMAP)::LoadImage(NULL, BmpFilePath, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
//////////////////////////////////
CBitmap BitMap;
BitMap.Attach(hBitMap);
BITMAP bBitmap;
BitMap.GetBitmap(&bBitmap);
//////////////////////////////////
pMemDc.SelectObject(&hBitMap);
//缩放图片,缩放大小为192x192
pScreenDc.SetStretchBltMode(HALFTONE);
pScreenDc.StretchBlt(0, 0, 192, 192, &pMemDc, 0, 0, bBitmap.bmWidth, bBitmap.bmHeight, SRCCOPY);
dc.BitBlt(0, 0, theApp.m_ScreenWidth, theApp.m_ScreenHeight, &pScreenDc, 0, 0, SRCCOPY);
void CtesttttttDlg::OnPaint()
{
CPaintDC dc(this);
CBitmap m_Bitmap;
m_Bitmap.LoadBitmap(IDB_Gugong);
BITMAP m_bitmapInfo;
m_Bitmap.GetBitmap(&m_bitmapInfo);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
//CRect rect;
//GetWindowRect(&rect);
//memDC.DrawText("dfdfdfd",rect,0);
CBitmap *pOldBmp=memDC.SelectObject(&m_Bitmap);
// dc.BitBlt(0,0,m_bitmapInfo.bmWidth,m_bitmapInfo.bmHeight,&memDC,0,0,SRCCOPY);
dc.StretchBlt(0,0,m_bitmapInfo.bmWidth,m_bitmapInfo.bmHeight,&memDC,0,0,500,500,SRCCOPY);
memDC.SelectObject(pOldBmp);
}
CPaintDC dc(this);//显示DC,只是想用来查看得到的DC是不是我想要的
CDC pScreenDc;//我真正想要的DC,其图片大小为192x192大小
pScreenDc.CreateCompatibleDC(&dc);
CDC pMemDc;//内存DC,用来存放导入的BMP文件
pMemDc.CreateCompatibleDC(&dc);
CRect rcClient;
GetClientRect(&rcClient);
CBitmap hScreenBitmap;
hScreenBitmap.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height());
CBitmap *pOldMap = pScreenDc.SelectObject(&hScreenBitmap);
HBITMAP hBitMap = (HBITMAP)::LoadImage(NULL, "C:\\asd.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
//////////////////////////////////
CBitmap BitMap;
BitMap.Attach(hBitMap);
BITMAP bBitmap;
BitMap.GetBitmap(&bBitmap);
//////////////////////////////////
pMemDc.SelectObject(&BitMap); //这个地方直接用CBitmap
//缩放图片,缩放大小为192x192
pScreenDc.SetStretchBltMode(HALFTONE);
pScreenDc.StretchBlt(0, 0, 192, 192, &pMemDc, 0, 0, bBitmap.bmWidth, bBitmap.bmHeight, SRCCOPY);
dc.BitBlt(0, 0, rcClient.Width(), rcClient.Height(), &pScreenDc, 0, 0, SRCCOPY);