1

我正在使用 graphics.h 库来实现显示屏上的关机按钮。我面临的问题是颜色函数(setfillcolor())不起作用,我想用红色将两个圆圈之间的区域着色.我的编译器是turbo C。

   void shutdown(void)
    { 
    setcolor(RED);
    circle(550,50,10);
    setfillcolor(RED);
    //color.
    circle(550,50,15);
    setcolor(CYAN);
    }

替代文字

4

1 回答 1

1

setfillcolor 只是设置填充颜色吗?即它真的画什么吗?

可能要填写您的背景,您可能必须先找到它的矩形,然后在绘制两个圆圈之前调用 FilledRectangle(对不起,我不知道函数名称)?

所以是这样的:(伪代码)

  1. 设置填充颜色
  2. 绘制背景矩形
  3. 设置 circlce 1 颜色
  4. 画圈1
  5. 设置圆 2 颜色
  6. 画圈2

对不起,如果我叫错了树!


编辑:

有太多可能你是对的;)这里有两次尝试回答我对你问题的解释(尽管我不完全确定你在追求什么):

答案1:

尝试这样的事情

void shutdown(void)
{ 
setfillcolor(BLACK);
FilledRectangle(screenRectLeft, screenRectTop,
    screenRectRight, screenRectBottom);

setcolor(CYAN);
circle(550,50,15);

setcolor(RED);
circle(550,50,10);
}

其中 screenRectLeft、screenRectTop、screenRectRight 和 screenRectBottom 是屏幕矩形的范围。这样做是设置绘制填充形状时要使用的填充颜色。然后用您必须提供的屏幕范围绘制一个填充的矩形。然后在已经绘制的填充矩形上绘制圆圈。绘制圆圈的顺序已被切换,以便较大的圆圈不会过度绘制较小的圆圈(我假设这是您想要的)。

答案2:

如果你的意思是你想要两个环,每个环都有相同的中心点,它们之间的空间是背景颜色,你将不得不从最大的圆向内绘制同心圆,如下所示:

void shutdown(void)
{ 
setfillcolor(BLACK);
FilledRectangle(screenRectLeft, screenRectTop,
    screenRectRight, screenRectBottom);

setcolor(RED);
circle(550,50,20);

setcolor(BLACK);
circle(550,50,15);

setcolor(RED);
circle(550,50,10);

setcolor(BLACK);
circle(550,50,5);
}

那应该(我认为,不能测试)画两个红环。您可以根据自己的喜好调整半径:o


希望这可以帮助!?

ps 我刚刚看到您帖子下方的图片 - 如果这是您想要的结果,我强烈建议您尽可能使用更强大/最新的图形库!

于 2010-11-17T10:44:55.557 回答