修改上述代码,其填充颜色为红色
时间: 2024-03-01 10:54:29 浏览: 114
11.如何设置屏幕上某点的颜色?(Visual C++编程 源代码)
已经在上面的示例代码中修改了填充颜色为红色,可以参考。这里再次给出修改后的代码:
```cpp
#include <graphics.h>
#include <queue>
using namespace std;
// 定义颜色结构体
struct COLOR {
int r, g, b;
};
// 获取指定点的颜色
COLOR getPixelColor(int x, int y) {
COLOR color;
DWORD rgb = getpixel(x, y);
color.r = GetRValue(rgb);
color.g = GetGValue(rgb);
color.b = GetBValue(rgb);
return color;
}
// 设置指定点的颜色
void setPixelColor(int x, int y, COLOR color) {
setlinecolor(RGB(color.r, color.g, color.b));
putpixel(x, y, RGB(color.r, color.g, color.b));
}
// 扫描线种子填充算法
void fillArea(int x, int y, COLOR color) {
queue<POINT> q;
POINT p = {x, y};
q.push(p);
while (!q.empty()) {
p = q.front();
q.pop();
int x = p.x, y = p.y;
if (getPixelColor(x, y).r == color.r && getPixelColor(x, y).g == color.g && getPixelColor(x, y).b == color.b) {
continue;
}
setPixelColor(x, y, color);
POINT up = {x, y - 1};
POINT down = {x, y + 1};
POINT left = {x - 1, y};
POINT right = {x + 1, y};
if (y > 0 && getPixelColor(x, y - 1).r != color.r && getPixelColor(x, y - 1).g != color.g && getPixelColor(x, y - 1).b != color.b) {
q.push(up);
}
if (y < getmaxy() && getPixelColor(x, y + 1).r != color.r && getPixelColor(x, y + 1).g != color.g && getPixelColor(x, y + 1).b != color.b) {
q.push(down);
}
if (x > 0 && getPixelColor(x - 1, y).r != color.r && getPixelColor(x - 1, y).g != color.g && getPixelColor(x - 1, y).b != color.b) {
q.push(left);
}
if (x < getmaxx() && getPixelColor(x + 1, y).r != color.r && getPixelColor(x + 1, y).g != color.g && getPixelColor(x + 1, y).b != color.b) {
q.push(right);
}
}
}
// 测试代码
int main() {
initgraph(640, 480);
// 绘制一个矩形
rectangle(100, 100, 300, 300);
// 填充矩形
COLOR color = {255, 0, 0};
fillArea(200, 200, color);
getch();
closegraph();
return 0;
}
```
阅读全文