MFC中图片控件中位图的移动问题

「已注销」 2011-08-15 01:00:18
在下MFC菜鸟一只,在使用PICTURE控件时遇到一个问题,我点击UP按钮时,图片往上移动了一点,可是再点UP就没用了,如何解决这个问题,希望各位大虾不吝赐教。
void CPpDlg::OnUp()
{
// TODO: Add your control notification handler code here
UpdateData();
CDC dcMemory;
CDC *pDC=GetDC();
dcMemory.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
BITMAP bmpinfo;
bmp.GetBitmap(&bmpinfo);
CBitmap *pOld=dcMemory.SelectObject(&bmp);
CRect rc;
CWnd *pWnd=GetDlgItem(IDC_BITMAP);
pWnd-> GetClientRect(rc);
//pWnd-> ClientToScreen(rc);
int i=5;
pDC->BitBlt(41,36,rc.Width(),rc.Height(),&dcMemory,rc.TopLeft().x+440,rc.TopLeft().y+360,SRCCOPY);
//ReleaseDC(pDC);
UpdateData(FALSE);
}
...全文
467 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT_小然子 2013-05-09
  • 打赏
  • 举报
回复
尝试一下13楼的方法
q1q2q3q4ln 2011-08-23
  • 打赏
  • 举报
回复
你代码都写死了,当然不动了
pDC->BitBlt(41,36+up_value,rc.Width(),rc.Height(),&dcMemory,rc.TopLeft().x+440,rc.TopLeft().y+360,SRCCOPY);
你每次点UP函数的时候,都要修改up_value值
yang8961 2011-08-22
  • 打赏
  • 举报
回复
楼主的PICTURE控件原始位置不是在(41,36),你可以看看,当你点击按钮后PICTURE控件位置重新移动到了你指定的位置(41,36)了,所以第一次点击会有移动效果。

你的int i=5; ???用了吗?貌似你是想用这个控制位置的
「已注销」 2011-08-22
  • 打赏
  • 举报
回复
来个人才撒。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
「已注销」 2011-08-15
  • 打赏
  • 举报
回复
各位大侠一定要帮忙啊,我刚注册的,有多少分送多少分。。。。
「已注销」 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 buyong 的回复:]
你的图片位置固定在(41,36),怎么能移动呢?
是这样的,图片大小比控件大小要大,所以我把图象居中显示了,控件只能显示图象的一部分,我想通过UP按钮在这个矩形区域里让图像显示它上面5个像素点的内容,就是图像在对话框的位置没有变化,只是图像显示的坐标在变化,不知道我说的你懂不懂。。。。有点儿纠结
buyong 2011-08-15
  • 打赏
  • 举报
回复
你的图片位置固定在(41,36),怎么能移动呢?
[Quote=引用 2 楼 fyz2841585 的回复:]
是不是显示函数的问题啊!
pDC->BitBlt(41,36,rc.Width(),rc.Height(),&dcMemory,rc.TopLeft().x+440,rc.TopLeft().y+360,SRCCOPY);
[/Quote]
fyz2841585 2011-08-15
  • 打赏
  • 举报
回复
是不是显示函数的问题啊!
pDC->BitBlt(41,36,rc.Width(),rc.Height(),&dcMemory,rc.TopLeft().x+440,rc.TopLeft().y+360,SRCCOPY);
jyh_baoding 2011-08-15
  • 打赏
  • 举报
回复
帮顶一个
「已注销」 2011-08-15
  • 打赏
  • 举报
回复
各位大侠,我要移动的不是控件,控件的ID是IDC_BITMAP,图片的ID是IDB_BITMAP1,我想移动的是控件里面的图像,图像比控件要大,所以只能显示一部分。。。
wltg2001 2011-08-15
  • 打赏
  • 举报
回复
你要向上移,最起码要写成:
pDC->BitBlt(41,36-i--,rc.Width(),rc.Height(),&dcMemory,rc.TopLeft().x+440,rc.TopLeft().y+360,SRCCOPY);
wltg2001 2011-08-15
  • 打赏
  • 举报
回复
你的目的是什么呢?你上面的本身并不具备连续移动的功能,它执行之后的结果就是将图片贴到(41,36)处。
jiuzhoulh 2011-08-15
  • 打赏
  • 举报
回复
当点击了按钮后,以后再点击位置没有变动,所以只有第一次看得到移动效果
jiuzhoulh 2011-08-15
  • 打赏
  • 举报
回复
楼主的PICTURE控件原始位置不是在(41,36),你可以看看,所有当你点击按钮后PICTURE控件位置重新移动到了你指定的位置(41,36)了

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧