1

ディスプレイ画面にシャットダウンボタンを実装するためにgraphics.hライブラリを使用しています.私が直面している問題は、2つの円の間の領域を赤くしたい色関数(setfillcolor())が機能していないことです. .私のコンパイラはターボ 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. サークル 1 色を設定
  4. 円を描く 1
  5. セットサークル2色
  6. 円を描く 2

間違ったツリーを吠えたらごめんなさい!


編集:

数が多すぎるかもしれませんが、あなたは正しいかもしれません;)あなたの質問の私の解釈に対する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:

同じ中心点を持つ 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);
}

それは(私が思うに、テストできない)2つの赤いリングを描くべきです。好みに合わせて半径を調整できます:o


お役に立てれば!?

ps 私はあなたの投稿の下にある画像を見ました - もしそれがあなたの結果のようなものであるなら、可能であればより強力な/最新のグラフィックライブラリを使用することを強くお勧めします!

于 2010-11-17T10:44:55.557 に答える