我想将一张图片在一个对话框背景范围内用平铺、拉伸、居中、缩放等不同的方式显示,并将该对话框的新背景保存为另一张图片,我现在的作法是: HDC hMemDC;
HBITMAP hBitmap, hOldBitmap;
HBITMAP hBmp;
CDC * pDC = GetDC(); CRect rc;
GetClientRect(rc); hBmp = (HBITMAP)LoadImage(NULL, FileName, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
CBitmap tempmap;
tempmap.Attach(hBmp); //载入原始图片 pDC->FillRect(CRect(0,0,rc.Width(), rc.Height()), &brush); //平铺效果 hMemDC = CreateCompatibleDC(pDC->m_hDC); hBitmap = CreateCompatibleBitmap(pDC->m_hDC, rc.Width(), rc.Height());
hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap); BitBlt(hMemDC, 0, 0, rc.Width(), rc.Height(), pDC->m_hDC, 0, 0, SRCCOPY);
hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap);现在的问题是:我是用截屏的方法生成的图片,当该对话框被其他窗口挡住的时候,生成的图片会有其他窗口。我想问的是还有没有其他方法来实现这个功能?
HBITMAP hBitmap, hOldBitmap;
HBITMAP hBmp;
CDC * pDC = GetDC(); CRect rc;
GetClientRect(rc); hBmp = (HBITMAP)LoadImage(NULL, FileName, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
CBitmap tempmap;
tempmap.Attach(hBmp); //载入原始图片 pDC->FillRect(CRect(0,0,rc.Width(), rc.Height()), &brush); //平铺效果 hMemDC = CreateCompatibleDC(pDC->m_hDC); hBitmap = CreateCompatibleBitmap(pDC->m_hDC, rc.Width(), rc.Height());
hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap); BitBlt(hMemDC, 0, 0, rc.Width(), rc.Height(), pDC->m_hDC, 0, 0, SRCCOPY);
hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap);现在的问题是:我是用截屏的方法生成的图片,当该对话框被其他窗口挡住的时候,生成的图片会有其他窗口。我想问的是还有没有其他方法来实现这个功能?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货