0

我最近开始使用 Dev C++ 4.9.9.2 来试验 C 中的图形程序(感谢本教程)。但是由于某种原因,setbkcolor()绝对什么都不做。这是代码...

#include <stdio.h>
#include <graphics.h>
#include <conio.h>

int main()
{
    initwindow(800,600);
    setbkcolor(GREEN);   //FAILED. also tried "setbkcolor(2);"
    while ( !kbhit() ){}
    return 0;
}

这是输出:黑色屏幕仍然

我正在使用Windows 7 专业版。这与操作系统有关吗?

4

2 回答 2

2

文档Windows 注释部分中说:

此外,只有未来的绘图将使用新的背景颜色(当前以旧背景颜色绘制的任何内容都将保持旧颜色)。调用setbkcolor(0)会将背景颜色更改为[0]调色板索引处的当前颜色(而不是总是将背景更改为黑色)。

您误解了函数的目标。

于 2015-08-24T13:58:43.310 回答
1

因为窗口是在设置背景颜色之前绘制的。设置背景颜色后使用 cleardevice() 重新创建屏幕。

#include<stdio.h>
#include<graphics.h>

int main()
{
    int gd = DETECT, gm;
    initgraph(&gd, &gm, "");
    setbkcolor(GREEN);
    cleardevice();

    getch();
    closegraph();
    return 0;
}
于 2020-03-30T10:45:06.920 回答