我正在编写用于在VC ++中缩小图像的代码。当我保存目标位图时,它会提供单色图像。 代码:
int iNewWidth = 400;
int iNewHeight = 500;
CImage image;
HRESULT rs=image.Load(_T("E:\\input.jpg"));
int a=10;
CDC destDC;
int res=destDC.CreateCompatibleDC(NULL);
HDC hdcDest=HDC(destDC);
HBITMAP hDestBitmap=CreateCompatibleBitmap(hdcDest, iNewWidth, iNewHeight);
HBITMAP hOldBitmap=(HBITMAP)SelectObject(hdcDest,hDestBitmap);
SetStretchBltMode(hdcDest,BLACKONWHITE);
BOOL bl=image.StretchBlt(hdcDest,0, 0, iNewWidth, iNewHeight, 0, 0, image.GetWidth(), image.GetHeight(), SRCERASE);
HRESULT res2;
CImage new_image;
new_image.Attach(hDestBitmap);
res2=new_image.Save(_T("E:\\NewImage.jpg"));
HBITMAP hb=new_image.Detach();
ReleaseDC(NULL,hdcDest);
如果有人在这里帮助我,我将非常感激。 提前致谢
答案 0 :(得分:1)
创建DC时,它最初会选择单色位图。当您对该DC使用CreateCompatibleBitmap
时,它会使用所选位图的特征 - 即它会创建另一个单色位图。
使用GetDC(NULL)
来电中CreateCompatibleBitmap
返回的DC。