C语言实现鼠标绘图
2021/12/9 6:19:01
本文主要是介绍C语言实现鼠标绘图,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
使用C语言+EGE图形库。主要思路是通过不断绘制直线实现鼠标绘图的功能,前一个时刻鼠标的坐标作为直线的起点,现在时刻鼠标的坐标作为直线的终点(严格意义上是线段)。
1 #include "graphics.h" 2 3 int main() { 4 initgraph(1000, 600, 0); 5 setcolor(GREEN); 6 7 // 开启抗锯齿,使线条更平滑 8 ege_enable_aa(true); 9 10 // 前一个时刻鼠标的坐标,后一个时刻鼠标的坐标 11 // 用这两点坐标绘制直线,实现连续的绘图动作 12 int pre_x, pre_y, now_x, now_y; 13 int toDraw = 0; 14 15 for (; is_run();) { 16 // 时刻获取新的鼠标消息 17 mouse_msg msg = {0}; 18 msg = getmouse(); 19 20 // 1. 鼠标左键有消息,判断是否绘图操作 21 if(msg.is_left()) { 22 // 若左键按下,则开始绘图 23 if(msg.is_down()) { 24 toDraw = 1; 25 } 26 // 否则不绘图 27 else { 28 toDraw = 0; 29 } 30 } 31 32 // 2. 更换坐标信息 33 // 前一个时刻的坐标为直线起点 34 // 现在时刻的坐标为直线终点 35 // 记录现在时刻的坐标,作为下一个时刻的“前一个时刻的坐标” 36 pre_x = now_x; 37 pre_y = now_y; 38 now_x = msg.x; 39 now_y = msg.y; 40 41 // 实时显示鼠标坐标信息 42 if(msg.x>=0&&msg.x<=1000 && msg.y>=0&&msg.y<=600) { 43 xyprintf(1,1,"[%d,%d]",msg.x, msg.y); 44 } 45 // 3. 用绘制直线的方式实现鼠标连续绘图 46 if(toDraw) { 47 line(pre_x, pre_y, now_x, now_y); 48 } 49 } 50 51 getch(); 52 closegraph(); 53 return 0; 54 }
效果展示:
这篇关于C语言实现鼠标绘图的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-06Package Easy(基于 NSIS 的打包exe安装包工具)使用方法-icode9专业技术文章分享
- 2024-06-06基于 casdoor 的 ELK 开源登录认证解决方案: elk-auth-casdoor-icode9专业技术文章分享
- 2024-05-29Elasticsearch慢查询日志配置
- 2024-05-29揭秘华为如此多成功项目的产品关键——Charter模板
- 2024-05-29海外IDC业务拓展的7大挑战
- 2024-05-29InLine Chat功能优化对标Github Copilot,CodeGeeX带来更高效、更直观的编程体验!
- 2024-05-29CodeGeeX 智能编程助手 6 项功能升级,在Visual Studio插件市场霸榜2周!
- 2024-05-29AutoMQ 生态集成 Apache Doris
- 2024-05-292024年IDC行业的深度挖掘:机遇、挑战与未来展望
- 2024-05-29五款扩展组件齐发 —— Volcano、Keda、Crane-scheduler 等,邀你体验