easyx鼠标判定圆形
时间: 2023-09-23 14:11:28 浏览: 87
鼠标经过放大显示圆形按钮
EasyX中可以使用以下代码判断鼠标是否在圆形内:
```cpp
#include <graphics.h>
// 判断鼠标是否在圆形内
bool isMouseInCircle(int x, int y, int r) {
int mouseX = GetMouseX();
int mouseY = GetMouseY();
return (mouseX - x) * (mouseX - x) + (mouseY - y) * (mouseY - y) <= r * r;
}
int main() {
// 初始化
initgraph(640, 480);
// 绘制圆形
int x = 320;
int y = 240;
int r = 50;
setfillcolor(RED);
fillcircle(x, y, r);
// 循环判断鼠标位置
while (true) {
if (isMouseInCircle(x, y, r)) {
setfillcolor(GREEN);
} else {
setfillcolor(RED);
}
fillcircle(x, y, r);
FlushMouseMsgBuffer();
Sleep(50);
}
// 关闭图形界面
closegraph();
return 0;
}
```
其中,`isMouseInCircle`函数用于判断鼠标是否在圆形内,参数`x`、`y`、`r`分别表示圆心的坐标和半径。函数返回值为`true`表示鼠标在圆形内,返回值为`false`表示鼠标不在圆形内。
在主函数中,我们先绘制一个红色的圆形,然后循环判断鼠标位置,如果鼠标在圆形内就把圆形填充为绿色,否则填充为红色。
注意,在每次循环中要调用`FlushMouseMsgBuffer`函数清空鼠标消息缓冲区,否则可能会出现鼠标状态不正确的问题。另外,在循环中要加上`Sleep`函数以减少CPU占用率。
阅读全文