ege中 rectangle()函数作用
时间: 2024-04-28 12:22:32 浏览: 97
在ege(Easy Graphics Engine)中,rectangle()函数用于绘制矩形。它有多个重载形式,可以指定矩形的位置、大小、颜色等参数。例如,rectangle(x, y, x + w, y + h)可以绘制一个左上角坐标为(x,y),宽度为w,高度为h的矩形。另外,还可以通过设置填充颜色和边框颜色来实现不同的绘制效果。
相关问题
C++EGE中实现在五个矩形内,通过鼠标左键打勾,鼠标右键取消打勾
在EGE中实现如下:
```c++
#include <graphics.h>
int main()
{
initgraph(640, 480); // 创建绘图窗口
int x[] = {100, 200, 300, 400, 500}; // 矩形中心点x坐标
int y[] = {100, 200, 300, 400, 500}; // 矩形中心点y坐标
int r = 30; // 矩形半径
bool checked[] = {false, false, false, false, false}; // 记录矩形是否被打勾
while (true) // 循环绘制
{
cleardevice(); // 清空屏幕
for (int i = 0; i < 5; i++) // 绘制矩形
{
if (checked[i]) // 如果矩形被打勾,则绘制勾号
{
setlinecolor(GREEN); // 设置勾号颜色
line(x[i] - r, y[i], x[i], y[i] + r); // 绘制勾号
line(x[i], y[i] + r, x[i] + r, y[i] - r);
}
setlinecolor(BLACK); // 设置矩形边框颜色
rectangle(x[i] - r, y[i] - r, x[i] + r, y[i] + r); // 绘制矩形
}
if (MouseHit()) // 如果有鼠标消息
{
MOUSEMSG msg = GetMouseMsg(); // 获取鼠标消息
if (msg.uMsg == WM_LBUTTONDOWN) // 如果是鼠标左键按下
{
for (int i = 0; i < 5; i++) // 遍历矩形
{
if (msg.x >= x[i] - r && msg.x <= x[i] + r && msg.y >= y[i] - r && msg.y <= y[i] + r) // 如果鼠标在矩形内部
{
checked[i] = true; // 将矩形设为打勾状态
break; // 跳出循环
}
}
}
else if (msg.uMsg == WM_RBUTTONDOWN) // 如果是鼠标右键按下
{
for (int i = 0; i < 5; i++) // 遍历矩形
{
if (msg.x >= x[i] - r && msg.x <= x[i] + r && msg.y >= y[i] - r && msg.y <= y[i] + r) // 如果鼠标在矩形内部
{
checked[i] = false; // 将矩形设为非打勾状态
break; // 跳出循环
}
}
}
}
}
closegraph(); // 关闭绘图窗口
return 0;
}
```
代码解释:
1. `x` 和 `y` 数组分别存储五个矩形的中心点坐标,`r` 存储矩形半径,`checked` 数组记录五个矩形是否被打勾。
2. `while` 循环用于不断地绘制矩形和勾号,并处理鼠标事件。
3. `cleardevice()` 函数用于清空屏幕。
4. `for` 循环用于遍历五个矩形,绘制矩形和勾号。如果矩形被打勾,则绘制勾号。
5. `setlinecolor()` 函数用于设置画笔颜色。
6. `line()` 函数用于绘制勾号。
7. `rectangle()` 函数用于绘制矩形。
8. `MouseHit()` 函数用于判断是否有鼠标消息。
9. `GetMouseMsg()` 函数用于获取鼠标消息。
10. `msg.uMsg` 表示鼠标消息类型,`WM_LBUTTONDOWN` 表示鼠标左键按下,`WM_RBUTTONDOWN` 表示鼠标右键按下。
11. 如果鼠标在矩形内部,就将对应的矩形设为打勾状态或非打勾状态。
12. `break` 语句用于跳出循环,避免重复修改矩形状态。
13. `closegraph()` 函数用于关闭绘图窗口。
如何用EGE控制鼠标在界面上打勾
以下是使用EGE控制鼠标在界面上打勾的示例代码:
```
#include <graphics.h>
#include <conio.h>
#include <windows.h>
int main()
{
initgraph(640, 480); // 初始化图形窗口
setbkcolor(WHITE); // 设置背景颜色为白色
cleardevice(); // 清屏
// 绘制一个方框和一个文本框
rectangle(100, 100, 200, 200);
rectangle(220, 120, 300, 160);
outtextxy(230, 130, "选中");
while (true) {
// 监听鼠标左键按下事件
if (MouseHit()) {
MOUSEMSG msg = GetMouseMsg();
if (msg.uMsg == WM_LBUTTONDOWN) {
// 判断鼠标点击位置是否在文本框内
if (msg.x > 220 && msg.x < 300 && msg.y > 120 && msg.y < 160) {
// 绘制一个勾
setcolor(BLACK);
line(225, 140, 240, 155);
line(240, 155, 265, 130);
}
}
}
}
getch(); // 等待用户按下任意键关闭窗口
closegraph(); // 关闭图形窗口
return 0;
}
```
此示例代码中,我们使用EGE的函数来绘制一个方框和一个文本框,然后通过监听鼠标左键按下事件,在文本框内绘制一个勾,从而实现在界面上打勾的效果。
阅读全文