C中着色的问题

时间:2010-11-17 06:59:37

标签: c graphics turbo-c

我正在使用graphics.h库来实现显示屏上的关机按钮。我面临的问题是颜色功能(setfillcolor())无法正常工作我想要为两者之间的区域着色红色的圆圈。我的编译器是turbo C。

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

alt text

1 个答案:

答案 0 :(得分:1)

setfillcolor只设置填充颜色吗?它实际上是否画了什么?

要填写你的背景你可能需要找到它的矩形,也许在你画两个圈之前调用FilledRectangle(我不知道功能名称对不起)?

这样的事情:(伪代码)

  1. 设置填充颜色
  2. 绘制背景矩形
  3. 设置cirlce 1颜色
  4. 画圈1
  5. 设置cirlce 2 color
  6. 画圈2
  7. 抱歉,如果我咆哮错误的树!


    编辑:

    有一些太多可能是对的;)这里有两次尝试回答我对你的问题的解释(虽然我不完全确定你的意思):

    回答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


    希望这有帮助!?

    P.S。我刚刚看到你帖子下面的图片 - 如果那是你想要的结果,我会强烈建议使用更强大/最新的图形库!如果可能的话!