MFC缩放后的图片移动

MFCVS2005。已经实现了图片的移动和缩放,但是缩放后每次移动图片都会恢复原来大小,每次都白缩放了,求达人解答下。是复制复本呢,还是找到缩放后图片的句柄呢,求详细点的... MFC VS2005 。已经实现了图片的移动和缩放,但是缩放后每次移动图片都会恢复原来大小,每次都白缩放了,求达人解答下。是复制复本呢,还是找到缩放后图片的句柄呢,求详细点的解答 展开
 我来答
温情时光剪影
2012-09-14 · TA获得超过1634个赞
知道小有建树答主
回答量:607
采纳率:33%
帮助的人:229万
展开全部
你是怎么缩放的。移动后会刷新窗口,所以应响应WM_PAINT或WM_ERASEBKGND消息时绘制缩放后的图片。方法是你可以保存缩放后的图片到内存DC。
更多追问追答
追问
能不能简单写下复制到内存DC,然后获得DC句柄呢,你的回答让我了解不少了,先谢谢了
追答
//以下代码用API写,可以用在Win32或MFC,如果用MFC的类实现原理一样(CDC、CWindowDC、CPaintDC、CBitmap)
//----将源DC存入内存DC
//以下三个参数是源DC的信息,具体需要自己设置。如一个窗口的DC、窗口的宽、窗口的高,那么之后实现的就是将窗口DC的内容存入内存DC
HDC hDC;//=...;源DC
int width;//源DC宽
int height;//源DC高
//以下为创建内存DC相关
HDC hRawMemDC=::CreateCompatibleDC(hDC);//创建内存DC
HBITMAP hRawBmp=::CreateCompatibleBitmap(hDC,width,height);//创建内存DC的画布
HBITMAP hOldRawBmp=(HBITMAP)::SelectObject(hRawMemDC,(HBITMAP)hRawBmp);//将画布装入内存DC,并保存原有信息(为了系统正常释放DC,用完DC最好还原其原始状态)
//以下是调用BitBlt将源DC(参数6)内容存入目标DC(参数1),其中采用拷贝模式SRCCOPY
::BitBlt(hRawMemDC,0,0,width,height,hDC,0,0,SRCCOPY);//将源DC的内容拷贝到内存DC
//----------------------------
/*----DC位块化处理的函数
类似BitBlt的DC位块化处理函数有很多,如:
BitBlt
StretchBlt 可实现缩放
TransparentBlt
AlphaBlend  (可实现半透明)
----------------------------*/
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式