Олімпійські кільця

Програма Олімпійський прапор демонструє виведення графіки на поверхню форми.

Код написання програми

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Canvas->Font->Name = "Tahoma";
Canvas->Font->Size = 12;
}
void __fastcall TForm1::FormPaint(TObject *Sender)
{
#define WB 140 // ширина полотнища
#define HB 80 // висота полотнища
#define D 36 // діаметр кілець
int x,y;
AnsiString st = "Швидше, вище, сильніше!";
// обчислити координати лівого верхнього кута прапора
x = (ClientWidth - WB)/ 2;
y = (ClientHeight - HB )/ 2 - Canvas->Font->Size;
// полотнище
Canvas->Brush->Color = (TColor) RGB(255,255,255);
Canvas->FillRect( Rect(x,y,x+WB,y+HB) );
int xl = (ClientWidth - Canvas->TextWidth(st)) / 2;
/* Щоб область виведення тексту не була зафарбована кольором фону,
а також щоб метод Ellipse малював коло, а не коло,
значення властивості Brush->Style має дорівнювати bsClear */
Canvas->Brush->Style = bsClear;
// девіз
Canvas->TextOutA(xl,y+HB+6,st);
Canvas->Pen->Width = 2; // ширина кілець - два пікселі
// перший ряд кілець
// 3.2 * D - ширина області, яку займають кільця 1-го ряду
x = x + (WB - 3.2 * D) / 2;
y=y+(HB-1.6*D)/2 ;
Canvas->Pen->Color = (TColor) RGB(0,0,225); // синій
Canvas->Ellipse(x,y,x+D,y+D);
x = x + 1.1* D;
Canvas->Pen->Color = clBlack; // чорний
Canvas->Ellipse(x,y,x+D,y+D);
x = x + 1.1 * D;
Canvas->Pen->Color = (TColor) RGB(255,0,0); // червоний
Canvas->Ellipse(x,y,x+D,y+D);
// другий ряд кілець
x = x - D * 0.55;
y = y + 0.6 * D;
Canvas->Pen->Color = (TColor) RGB(0,128,0); // зелений
Canvas->Ellipse(x,y,x+D,y+D);
x = x - 1.1 * D;
Canvas->Pen->Color = (TColor) RGB(250,217,25);
Canvas->Ellipse(x,y,x+D,y+D);
}
void __fastcall TForm1::FormResize(TObject *Sender)
{
Form1->Refresh();
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *