C语言:利用EasyX实现鼠标交互绘图,新增Ctrl组合键绘制正方形功能
为了在你的代码中添加按下 `Ctrl+鼠标左键` 绘制红色正方形和 `Ctrl+鼠标右键` 绘制蓝色正方形的功能,你可以使用 `GetKeyState` 函数来检查 `Ctrl` 键是否被按下。以下是修改后的代码: ```c #include <easyx.h> #include <stdio.h> #include <graphics.h> int main() { initgraph(800, 600); setbkcolor(WHITE); cleardevice(); ExMessage msg; while (1) { msg = getmessage(EX_MOUSE); switch (msg.message) { case WM_MOUSEMOVE://鼠标移动,半径2黑色圆点 setfillcolor(BLACK); solidcircle(msg.x, msg.y, 2); break; case WM_LBUTTONDOWN://鼠标左键,半径10红色圆点 if (GetKeyState(VK_CONTROL) < 0) // 检查Ctrl键是否被按下 { setfillcolor(RED); bar(msg.x - 10, msg.y - 10, msg.x + 10, msg.y + 10); // 绘制边长为20的红色正方形 } else { setfillcolor(RED); solidcircle(msg.x, msg.y, 10); // 半径10的红色圆点 } break; case WM_RBUTTONDOWN://鼠标右键,半径10蓝色圆点 if (GetKeyState(VK_CONTROL) < 0) // 检查Ctrl键是否被按下 { setfillcolor(BLUE); bar(msg.x - 10, msg.y - 10, msg.x + 10, msg.y + 10); // 绘制边长为20的蓝色正方形 } else { setfillcolor(BLUE); solidcircle(msg.x, msg.y, 10); // 半径10的蓝色圆点 } break; } } closegraph(); // 添加关闭图形窗口的代码,以便在程序退出时正确释放资源 return 0; // 添加返回值,虽然在这个例子中它不会被执行到,但这是一个好习惯 } ``` 注意几点: 1. `bar` 函数:用于绘制填充矩形。这里我们用它来绘制正方形。参数分别是矩形的左上角和右下角的坐标。 2. `GetKeyState(VK_CONTROL) < 0`:检查 `Ctrl` 键是否被按下。如果 `Ctrl` 键被按下,`GetKeyState` 会返回一个负值。 3. 清除先前的绘制:在这个简单的例子中,每次鼠标移动或点击时都会重新绘制一个小圆点,这实际上会覆盖先前的绘制。如果你想要保持先前的绘制不被覆盖,你需要设计一个更复杂的状态管理机制来跟踪和重新绘制所有先前的图形。在这个例子中,为了简单起见,我们没有实现这一点。 4. 关闭图形窗口:添加了 `closegraph()` 函数调用,以确保在程序退出时正确释放图形资源。虽然在这个无限循环的例子中它实际上不会被执行到,但在实际开发中,确保资源被正确释放是一个好习惯。 5. 返回值:虽然在这个无限循环的程序中返回值不会被用到,但添加 `return 0;` 是一个良好的编程习惯,表示程序正常结束。 ######[AI写代码神器 | 770点数解答 | 2025-04-22 21:45:53]
- C++ 实现超清晰大学管理系统:涵盖学生、职工、教师、助教全角色(讯飞星火 | 1014点数解答 | 2024-05-29 18:22:53)352
- C++实现:包含学生、职工、教师和助教的大学管理系统(GPT | 1431点数解答 | 2024-05-29 18:23:32)347
- Python 实现简易密码设置系统:多种功能交互与安全要点揭秘(字节豆包 | 286点数解答 | 2025-03-28 10:43:21)355
- C语言实现多功能密码设置系统:含代码及安全注意要点(字节豆包 | 414点数解答 | 2025-03-28 10:43:55)343
- C 语言实现:超简单密码设置系统,含代码与注意要点!(字节豆包 | 519点数解答 | 2025-03-28 12:42:02)385
- C语言实现密码管理系统:含功能代码与安全注意事项(字节豆包 | 409点数解答 | 2025-04-05 18:09:56)333
- C语言实现多功能密码系统:初始化、确认、设置、显示、重置与退出(字节豆包 | 454点数解答 | 2025-04-05 18:48:42)332
- C语言实现密码管理系统:含初始化、确认、设置、显示、重置及退出功能(字节豆包 | 413点数解答 | 2025-04-06 15:37:16)279
- C 语言实现密码管理系统:含初始化、确认、设置、显示、重置及退出功能(字节豆包 | 403点数解答 | 2025-04-06 15:37:54)292
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- 优化高中英语核心词汇短语HTML页面,这些建议不容错过!(DeepSeek | 217点数解答 | 2025-07-01 23:41:02)188
- Qt 绘图全解析:从原理到示例及关键逻辑 (字节豆包 | 265点数解答 | 2025-03-12 10:55:54)176