procedure DrawArc(ACanvas: TCanvas; x,y,start_angle,end_angle,rx,ry:integer);
var s_a,e_a:real;
begin
s_a:=(start_angle-90)*pi/180;
e_a:=(end_angle-270)*pi/180;
ACanvas.Arc(x-rx,y-ry,x+rx,y+ry,x-round(sin(s_a)*rx),y-round(cos(s_a)*ry),x+round(sin(e_a)*rx),y+round(cos(e_a)*ry));
end;
procedure drawwin(Canvas:TCanvas; x,y:integer);
var r,h,r2:integer;
i,k:integer;
begin
r:=100;
h:=100;
r2:=50;
//////////////////fon
with canvas do
begin
///////////////red
pen.Width:=3;
for k:=0 to h do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(165,0,0);
4..6: pen.Color:=rgb(255,0,0);
7..9: pen.Color:=rgb(255,66,0);
10..12: pen.Color:=rgb(255,123,0);
13..15: pen.Color:=rgb(255,66,0);
end;
DrawArc(canvas,r-(((h-k) div 3))+h div 3+x - r+1 -r2,h+r-k+y-1-r -r2,45+i*5,45+(i+1)*5,r,r);
end;
pen.Width:=3;
for k:=h-2 to h do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(165,0,0);
4..6: pen.Color:=rgb(255,0,0);
7..9: pen.Color:=rgb(255,66,0);
10..12: pen.Color:=rgb(255,123,0);
13..15: pen.Color:=rgb(255,66,0);
end;
DrawArc(canvas,r-(((h-k) div 3))+h div 3+x - r+1 -r2,h+r-k+y-1-r -r2,45+i*5,45+(i+1)*5,r,r);
end;
/////////////////////////////
///////////////blue
pen.Width:=3;
for k:=0 to h do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(0,0,165);
4..6: pen.Color:=rgb(0,0,255);
7..9: pen.Color:=rgb(0,66,255);
10..12: pen.Color:=rgb(0,123,255);
13..15: pen.Color:=rgb(0,66,255);
end;
DrawArc(canvas,r-(((h-k) div 3))+x-r-r2,2*h+r+r div 10-k+y-r-r2,45+i*5,45+(i+1)*5,r,r);
end;
pen.Width:=1;
for k:=h-2 to h do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(0,0,165);
4..6: pen.Color:=rgb(0,0,255);
7..9: pen.Color:=rgb(0,66,255);
10..12: pen.Color:=rgb(0,123,255);
13..15: pen.Color:=rgb(0,66,255);
end;
DrawArc(canvas,r-(((h-k) div 3))+x-r-r2,2*h+r+r div 10-k+y-r-r2,45+i*5,45+(i+1)*5,r,r);
end;
/////////////////////////////
///////////////green
pen.Width:=3;
for k:=h downto 0 do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(0,115,0);
4..6: pen.Color:=rgb(0,165,0);
7..9: pen.Color:=rgb(0,255,0);
10..12: pen.Color:=rgb(82,255,82);
13..15: pen.Color:=rgb(0,255,0);
end;
DrawArc(canvas,r+(((h-k) div 3))+r+h div 3+x-r - r div 4-5-r2,k-r div 2+y+r-r+r div 10+2-r2,270-45+i*5,270-45+(i+1)*5,r,r);
end;
pen.Width:=1;
for k:=h-2 to h do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(0,115,0);
4..6: pen.Color:=rgb(0,165,0);
7..9: pen.Color:=rgb(0,255,0);
10..12: pen.Color:=rgb(82,255,82);
13..15: pen.Color:=rgb(0,255,0);
end;
DrawArc(canvas,r+(((h-k) div 3))+r+h div 3+x-r - r div 4-5-r2,k-r div 2+y+r-r+r div 10+2-r2,270-45+i*5,270-45+(i+1)*5,r,r);
end;
/////////////////////////////
///////////////yellow
pen.Width:=3;
for k:=0 to h do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(165,82,0);
4..6: pen.Color:=rgb(255,189,0);
7..9: pen.Color:=rgb(255,255,0);
10..12: pen.Color:=rgb(255,255,82);
13..15: pen.Color:=rgb(255,255,0);
end;
DrawArc(canvas,r+(((h-k) div 3))+r+h div 3+x-r + r div 10-3-r2,k-r div 2+y+r-r+r div 10-r-10-r2,270-45+i*5,270-45+(i+1)*5,r,r);
end;
pen.Width:=1;
for k:=h-2 to h do
for i:=1 to 16 do
begin
case i of
0..3: pen.Color:=rgb(165,82,0);
4..6: pen.Color:=rgb(255,189,0);
7..9: pen.Color:=rgb(255,255,0);
10..12: pen.Color:=rgb(255,255,82);
13..15: pen.Color:=rgb(255,255,0);
end;
DrawArc(canvas,r+(((h-k) div 3))+r+h div 3+x-r + r div 10-3-r2,k-r div 2+y+r-r+r div 10-r-10-r2,270-45+i*5,270-45+(i+1)*5,r,r);
end;
end;
/////////////////////////////
end;
procedure TForm6.Button1Click(Sender: TObject);
begin
drawwin(image1.Canvas, 200,200);
///центр задаётся примерно
end;