首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求助,在picture控件上插入背景图片,然后实现点的移动,可是一段时间后,点的移动轨迹出现了,不能刷新,为什么?万分感谢! [已结贴,结贴人:flyowen982]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • flyowen982
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-21 17:09:22 楼主
    大家好,有个问题想请教下。
    我在picture控件(属性为Rectangle)中插入一个背景图片后,在上面实现了点的移动(使用了OnTimer()和RedrawWindow()函数)。可是移动了一段时间,好像RedrawWindow()不起作用了,点的移动轨迹都出现了,根本不能刷新屏幕。(另外我试过,如果不插入背景图片,就比较正常,可以实现点的移动,不会出现移动的轨迹;一旦插入背景图片,移动一段时间后,RedrawWindow()就失效了)

    其中,我是这样插入背景图片的:我继承了VC的picture控件类(CPaintStatic),重写了OnPaint()函数,把背景图片导入了(自动适应控件的大小),然后在按钮中调用Invalidate()来触发此函数,代码如下:
    void CPaintStatic::OnPaint() {

    // TODO: Add your message handler code here
    if (paintFlag==true)  //paintFlag是我设置的标志
    {
    CPaintDC dc(this); // device context for painting
    HBITMAP hbmp=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),fileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTCOLOR|LR_DEFAULTSIZE);
    BITMAP bm;
    GetObject(hbmp,sizeof(bm),&bm);
    dc.SetStretchBltMode(HALFTONE);
    dc.StretchBlt(rc->left,rc->top,rc->Width(),rc->Height(),memDc,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
    }
    else
    {
                    CStatic::OnPaint();
    }

    // Do not call CStatic::OnPaint() for painting messages
    }
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mackz
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 4

      6

      7

    发表于:2008-08-22 01:16:531楼 得分:20
    你不停加载(创建)位图而不释放,GDI资源被耗尽了。象你这个位图只需要初始化加载一次就行了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shanying_0
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 08:44:442楼 得分:0
    路过学习了~~~~~~~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • flyowen982
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 12:39:513楼 得分:0
    呵呵,非常感谢Mackz..
    问题解决了。。马上结贴。。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved