虫虫教学

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 459|回复: 0

快来打地鼠

[复制链接]

4449

主题

4659

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
41710

最佳新人发帖达人推广达人热心会员突出贡献优秀讲师

发表于 2021-10-15 18:26:14 | 显示全部楼层 |阅读模式
              快来打地鼠
   实例实现的是在5个洞口随机出现可爱的地鼠,当用鼠标点击到地鼠后,地鼠会伸长舌头,表明你已经打到它了,效果如图1所示。

                           


关键技术
实例中一共有5个地鼠洞,每个地鼠洞都是一个矩形区域,在定时器内随机获取5个区域中的一个,然后在该区域内绘制地鼠图像,如果用户在该区域内按下了鼠标,表明已经打到地鼠,需要在该区域内重新绘制老鼠图片,绘制伸长舌头地鼠图像。实例是在OnPaint方法内通过一个图像编号来绘制地鼠图像,图像编号是多少就绘制该编号的图像,其他编号的图像不被显示,也就实现了隐藏。
设计过程
(1)创建基于对话框的工程,将对话框的ID设置为IDD_MOUSE_DIALOG。
(2)向工程中添加光标资源,将光标资源的ID设置为IDC_BROWSE。
(3)在OnInitDialog函数中设置区域坐标,并设置定时器。
(4)在函数OnPaint中绘制地鼠图片,如果随机区域号变量m_iCurRand值为-1,就不绘制任何地鼠图片。
void CMouseDlg::OnPaint()
{
      if (IsIconic())
      {
            CPaintDC dc(this);

            //代码省略
       }
      else
      {
            CDialog::OnPaint();
      }
      if (m_iCurRand > -1)
      {
            CDC* pDC  = GetDC();                                           //获取设备上下文指针
            CBitmap bmp;

            bmp.LoadBitmap(IDB_MOUSE);                                       //加载图片
             CDC memDC;
            memDC.CreateCompatibleDC(pDC);                                  //创建兼容设备上下文
            memDC.SelectObject(&bmp);                                    //加载图片到设备上下文
            pDC->BitBlt(m_rcCur.left,m_rcCur.top,m_rcCur.Width(),
                  m_rcCur.Height(),&memDC,0,0,SRCCOPY);               //绘制图片
            bmp.DeleteObject();
            memDC.DeleteDC();
      }
}

(5)在定时器实现函数OnTimer内实现随机区域。
(6)函数OnLButtonDown是单击按钮的实现函数,如果用户单击到地鼠,就重新绘制地鼠的图片,绘制伸长舌头的地鼠图片。
秘笈心法
心法领悟601:CopyRect方法的使用

CRect类的CopyRect方法可以实现矩形区域的复制,如果不使用该方法复制矩形区域就需要提取CRect对象的left、top、right、bottom四个成员的值,然后分别赋值给另一个CRect对象的四个成员。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|虫虫教学--虫虫联盟官网

GMT+8, 2025-4-28 23:32 , Processed in 0.087090 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表