有认识摘星VC/MFC如何让一张图片文件放大缩小呢。比如图片的分辨率是1024*768的,然后将它成了分辨率改为300*300第1个回答:战狼之羊2017-11-25超过47用户采纳过T

第1个回答:

战狼之羊2017-11-25超过47用户采纳过TA的回答关注代码手写的,应该有错误,自己改下吧,hwnd是你View的m_hWnd句柄CStringpath=_T("c:\123.jpg");BITMAPbmp;HBITMAPhbitmap=(HBITMAP)::LoadImage(0,path.AllocSysString(),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);::GetObject(hbitmap,sizeof(BITMAP),&bmp);DWORDdwCount=(DWORD)(bmp.bmWidthBytes*bmp.bmHeight);CDC*pcdc=CDC::FromHandle(GetDC(hwnd));pdc.CreateCompatibleDC(pcdc);CBitmapbmp;bmp.CreateCompatibleBitmap(pcdc,width,height);pdc.SelectObject(&bmp);pdc.StretchBlt(0,0,300,300,(CDC*)pcdc,x,y,bmp.width,bmp.height,SRCCOPY);CPalette*cpalette=pdc.GetCurrentPalette();HPALETTEhpalette=HPALETTE(cpalette);Bitmapbitmap(hbitmap,hpalette);CStringstr=_T("C:\\123size.jpg");WCHAR*pathname=str.AllocSysString();CLSIDclsid;CStringstrsid=_T("image/jpg");WCHAR*pstrsid=strsid.AllocSysString();GetEncoderClsid(pstrsid,&clsid);bitmap.S**e(pathname,&clsid,**LL);