当前位置: 首页 > news >正文

EasyX开发——绘制跟随鼠标移动的小球

游戏主循环:

#include<graphics.h>int main()
{initgraph(1280, 720);while (true){}return 0;
}

peekmessage函数:如果成功拉取到了消息,函数就会返回true,反之就会返回false

 

使用另外一个循环来不断地从消息队列当中拉取已有的消息,并进行处理,直到消息队列当中没有消息为止

 

添加事件处理函数 

#include<graphics.h>int main()
{initgraph(1280, 720);while (true){ExMessage msg;while (peekmessage(&msg)){//在这里进行消息处理}}return 0;
}

在msg变量当中保存有鼠标的x和y坐标

每次鼠标移动,我们就立刻绘制出圆的图案

怎么知道鼠标是否移动了?

添加判断:if(msg.message==WM_MOUSEMOVE)

圆怎么绘制?

使用solidcircle函数来绘图:

#include<graphics.h>int main()
{initgraph(1280, 720);int x = 300;int y = 300;while (true){ExMessage msg;while (peekmessage(&msg)){//在这里进行消息处理if (msg.message == WM_MOUSEMOVE){x = msg.x;y = msg.y;}					}solidcircle(x, y, 100);}return 0;
}

 但是在绘制新的位置的圆的时候,没有对之前位置的圆进行擦除

 

简单起见我们在每次绘图之前都使用cleardevice函数来清空整个窗口

即:

cleardevice();
solidcircle(x, y, 100);

运行之后,发现绘制出来的圆一直在闪烁

这是因为我们没有使用双缓冲对绘图进行优化处理

解决方案:

在主循环前后分别添加BeginBatchDraw()和EndBatchDraw()

在绘图之后添加FlushBatchDraw()函数

 

完整代码:

#include<graphics.h>int main()
{initgraph(1280, 720);int x = 300;int y = 300;BeginBatchDraw();while (true){ExMessage msg;while (peekmessage(&msg)){//在这里进行消息处理if (msg.message == WM_MOUSEMOVE){x = msg.x;y = msg.y;}					}cleardevice();solidcircle(x, y, 100);FlushBatchDraw();}EndBatchDraw();return 0;
}

okok,今天的你就到此为止吧,明天还要接着🐺啊!!🎈🎈🧡 

相关文章:

  • Stream流简介、常用方法
  • AD PCB布线的常用命令
  • 计算机组成与体系结构:全相联映射(Fully Associative Mapping)
  • ios remote debut proxy 怎么开启手机端调试和inspect
  • coco数据集mAP评估
  • UDP和TCP协议
  • 实现springBoot+vue系统项目时遇到的问题及解决方法
  • 优艾智合机器人助力半导体智造,领跑国产化替代浪潮
  • 3335. 字符串转换后的长度 I
  • Codeforces Round 998 (Div. 3)
  • Generative Diffusion Prior for Unified Image Restoration and Enhancement论文阅读
  • 【图像处理基石】如何入门OCR技术?
  • 2025.05.11拼多多机考真题算法岗-第一题
  • 数学复习笔记 6
  • 目标检测任务 - 数据增强
  • 5月13日day24日打卡
  • 医疗设备EMC测试为什么推荐GRJ1080B系列滤波器?
  • IPD流程实战:产品开发各阶段目标、关注点和交付
  • 2025B卷 - 华为OD机试七日集训第1期 - 按算法分类,由易到难,循序渐进,玩转OD
  • 使用Kubernetes实现零停机部署
  • A股午后拉升,沪指收复3400点:大金融发力,两市成交超1.3万亿元
  • 西安市未央区委书记刘国荣已任西咸新区党工委书记
  • 检疫期缩减至30天!香港优化内地进口猫狗检疫安排
  • 加强战略矿产出口全链条管控工作部署会召开
  • 中美经贸高层会谈在日内瓦结束,中国代表团将举行发布会
  • 中国海外发展:今年前4个月销售665.8亿元,花费305亿元拿地