2 / 2 / 2
Регистрация: 02.12.2013
Сообщений: 175

Как сделать каждый круг разного цвета?

22.05.2014, 12:47. Показов 4977. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
procedure Circle(x,y,R:integer);
begin
 Form1.PaintBox1.Canvas.Ellipse(x-R,y-R,x+R,y+R);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  n,Centr,L, i,R,x0,y0,x1,y1,x,y:Integer;
   rr:Real;
begin
   n:=5; //количество окружностей
   x:=paintbox1.Width div 2;  // центр окружности
   y:=PaintBox1.Height div 2; // центр окружности
   if x>y then R:=y else R:=x;
 
   Circle(x,y,R);
 
   rr := R / ( 1 + 1/sin(Pi/n) );
 
   for i:=0 to n-1 do
   begin
    x0 := Round((x) + (r-rr)*cos(((i*360/n))*pi/180));
    y0 := Round((y) + (r-rr)*sin(((i*360/n))*pi/180));
     Circle(x0,y0,Round(rr));
   end;
 
   x1:=x;
   y1:=y;
   Centr:=Round(r-rr);
 
      for l:=0 to n-1 do
   begin
    x := Round((x1) + (Centr)*cos(((l*360/n))*pi/180));
    y := Round((y1) + (centr)*sin(((l*360/n))*pi/180));
    if l=0 then R:=Round(rr);
    rr := R / ( 1 + 1/sin(Pi/n) );
 
   for i:=0 to n-1 do
   begin
    x0 := Round((x) + (r-rr)*cos(((i*360/n))*pi/180));
    y0 := Round((y) + (r-rr)*sin(((i*360/n))*pi/180));
     Circle(x0,y0,Round(rr));
   end;
   end;
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.05.2014, 12:47
Ответы с готовыми решениями:

Как в Delphi 7 сделать круг разделенный на сектора различного цвета
Как в Delphi 7 сделать круг разделенный на сектора различного цвета. И чтобы по нажатию кнопки происходила подсветка сектора. За 3-5 сек...

Разделить круг на 2, 3, 4, 5 секторов в зависимости от выбора радиокнопок, каждый полученный сектор следует закрасить в разные цвета.
Создать программу Delphi, которая позволит разделить круг на 2, 3, 4, 5 секторов в зависимости от выбора радиокнопок, каждый полученный...

Возможно ли в компоненте chart сделать каждый столбец разного цвета
Здравствуйте, возможно ли в компоненте chart сделать каждый столбец разного цвета? если да, то Вы не могли подсказать как.

32
2 / 2 / 2
Регистрация: 02.12.2013
Сообщений: 175
23.05.2014, 09:40  [ТС]
Студворк — интернет-сервис помощи студентам
таймер все равно остается?
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.05.2014, 09:56
Конечно, ведь смена координат по таймеру.
0
2 / 2 / 2
Регистрация: 02.12.2013
Сообщений: 175
23.05.2014, 09:58  [ТС]
добавьте пожалуйста в мой код, у меня что-то не получается.
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.05.2014, 10:00
Цитата Сообщение от mashka4190 Посмотреть сообщение
добавьте пожалуйста в мой код
В который? Где его взять?
0
2 / 2 / 2
Регистрация: 02.12.2013
Сообщений: 175
23.05.2014, 10:09  [ТС]
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Menus;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    PaintBox1: TPaintBox;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
 procedure Circle(x,y,R:integer);
begin
 
 Form1.PaintBox1.Canvas.Ellipse(x-R,y-R,x+R,y+R);
 
end;
procedure TForm1.Button1Click(Sender: TObject);
 var
  n,Centr,L, i,R,x0,y0,x1,y1,x,y:Integer;
   rr:Real;
begin
   n:=5; //количество окружностей
   x:=paintbox1.Width div 2;  // центр окружности
   y:=PaintBox1.Height div 2; // центр окружности
   if x>y then R:=y else R:=x;
    Form1.PaintBox1.Canvas.Brush.Color:= clyellow;
   Circle(x,y,R);
   rr := R / ( 1 + 1/sin(Pi/n) );
 
   for i:=0 to n-1 do
   begin
 
 
 
Form1.PaintBox1.Canvas.Brush.Color:= clGreen;
    x0 := Round((x) + (r-rr)*cos(((i*360/n))*pi/180));
    y0 := Round((y) + (r-rr)*sin(((i*360/n))*pi/180));
     Circle(x0,y0,Round(rr));
     x1 := Round((x) + (r-rr)*cos(((i*360/n))*pi/90));
    y1 := Round((y) + (r-rr)*sin(((i*360/n))*pi/90));
     Circle(x1,y1,Round(rr));
   end;
   x1:=x;
   y1:=y;
   Centr:=Round(r-rr);
 
      for l:=0 to n-1 do
   begin
 
    x := Round((x1) + (Centr)*cos(((l*360/n))*pi/180));
    y := Round((y1) + (centr)*sin(((l*360/n))*pi/180));
    if l=0 then R:=Round(rr);
    rr := R / ( 1 + 1/sin(Pi/n) );
 
   for i:=0 to n-1 do
   begin
     Form1.PaintBox1.Canvas.Brush.Color:= clBlue;
    x0 := Round((x) + (r-rr)*cos(((i*360/n))*pi/180));
    y0 := Round((y) + (r-rr)*sin(((i*360/n))*pi/180));
     Circle(x0,y0,Round(rr));
   end;
   end;
end;
 
 
 
procedure TForm1.Timer1Timer(Sender: TObject);
var x,y,a: integer;
begin
 Form1.DoubleBuffered:=true;
X := Round(300 + 100*cos(a*pi/180));
  Y := Round(200 + 100*sin(a*pi/180));
  inc(a);
  Canvas.FillRect(Canvas.ClipRect);
  ellipse(x, y, 100, 0, 360);
end;
 
end.
Добавлено через 5 минут
нужно сделать так, чтобы зеленые круги вращались по желтому, а синие по зеленым.
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
24.05.2014, 12:15
Лучший ответ Сообщение было отмечено mashka4190 как решение

Решение

Что-то забыли про тему, наверное ТС написал программу.
Но на всякий случай мой вариант.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
const n=5;
var
  Form1: TForm1;
  xc,yc,r,x1,y1,r1,x2,y2,r2,r3:integer;
  u,du:real;
  f:boolean;
implementation
 
{$R *.dfm}
procedure Krug(x,y,r,c:integer);
begin
with Form1.PaintBox1.Canvas do
 begin
  pen.Color:=c;
  brush.Color:=c;
  ellipse(x-r,y-r,x+r,y+r);
 end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//центр желтой окружности
xc:=paintbox1.Width div 2;
yc:=PaintBox1.Height div 2;
if xc>yc then r:=yc else r:=xc;//радиус желтой
r1:=round(r/(1+1/sin(pi/n)))-1;// радиус центров зеленых
r2:=round(r1/(1+1/sin(pi/n)))-1;// радиус центров синих
u:=pi/2; //верхний круг по середине
du:=0.1;
Timer1.Enabled:=false; //выключим таймер
Timer1.Interval:=100; //интервал 0.1 сек
doublebuffered:=true; //двойная буферизация от мерцания
f:=false;//выключено вращение
Button1.Caption:='ПУСК'; //кэпшен кнопки
end;
 
procedure TForm1.PaintBox1Paint(Sender: TObject);
var i,j:byte;
begin
Krug(xc,yc,r,clyellow);//рисуем желтый круг
for i:=0 to n-1 do //рисуем зеленые
 begin
  x1:=round(xc+(r-r1)*cos(u+i*2*pi/n));
  y1:=round(yc+(r-r1)*sin(u+i*2*pi/n));
  krug(x1,y1,r1,clGreen);
  for j:=0 to n-1 do//рисуем синие
   begin
    x2:=round(x1+(r1-r2)*cos(u+j*2*pi/n));
    y2:=round(y1-(r1-r2)*sin(u+j*2*pi/n));
    Krug(x2,y2,round(r2),clBlue);
   end;
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
if not f then //если выключено вращение
 begin
  Button1.Caption:='СТОП';
  du:=0.1;//увеличение угла на 0.1
  f:=true //включим
 end
else //если включено
begin
 Button1.Caption:='ПУСК';
  du:=0; //не уаеличиваем угол
  f:=false //выключим
 end;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
u:=u+du; //увеличиваем угол
PaintBox1.Repaint //перерисовываем
end;
Вложения
Тип файла: rar Вращение кругов.rar (162.7 Кб, 13 просмотров)
1
2 / 2 / 2
Регистрация: 02.12.2013
Сообщений: 175
03.06.2014, 11:59  [ТС]
а можно как-то сделать, чтоб сначала рисовать круги по уровням, а потом уже шла анимация?
и чтоб пользователь сам выбирал цвет кругов.
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
03.06.2014, 12:03
Цитата Сообщение от mashka4190 Посмотреть сообщение
чтоб сначала рисовать круги по уровням, а потом уже шла анимация?
Так пока не нажмешь кнопку анимации нет. А выбор цвета можно сделать в ColorDialog.
0
2 / 2 / 2
Регистрация: 02.12.2013
Сообщений: 175
03.06.2014, 12:06  [ТС]
вот мне и нужно, чтоб сначала при нажатии на кнопку по уровням рисовались круги, а затем шла анимация.
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
03.06.2014, 12:09
Судя по нику вроде блондинка, зарекался с ними связываться, опять черт дернул...
0
2 / 2 / 2
Регистрация: 02.12.2013
Сообщений: 175
03.06.2014, 12:15  [ТС]
нет, не блондинка, просто не шарю в делфи.
точнее именно графика в делфи.
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
03.06.2014, 12:52
Сделал так, смотрите.
Вложения
Тип файла: rar Вращение кругов_1.rar (182.6 Кб, 7 просмотров)
1
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
03.06.2014, 13:03
При выборе цветов оставьте так, а то я черный цвет проигнорировал
Delphi
1
2
3
4
5
6
7
8
if (ColorBox1.Selected=ColorBox2.Selected)
or (ColorBox1.Selected=ColorBox3.Selected)
or (ColorBox2.Selected=ColorBox3.Selected)
then
 begin
  ShowMessage('Выбраны одинаковые цвета');
  exit
 end;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.06.2014, 13:03

Вывести треугольник, прямоугольник, ромб, шестиугольник, круг линиями разного цвета
3. Вывести треугольник, прямоугольник, ромб, шестиугольник, круг линиями разного цвета, с разной внутренней штриховкой и закраской на...

Вывести треугольник, прямоугольник, ромб, шестиугольник, круг линиями разного цвета
помогите... "Вывести треугольник, прямоугольник, ромб, шестиугольник, круг линиями разного цвета, с разной внутренней штриховкой и...

Как сделать отрезки Polyline разного цвета?
Всем привет! Кто знает как сделать отрезки Polyline разного цвета? Если можно краткий пример.....

Как сделать строки разного цвета в TextArea?
Нужно сделать на AWT вывод в многострочном контроле (в нем будут отображаться сообщения чата) разными цветами. В принципе, мне не...

Как сделать движущийся круг со сменой цвета
Как сделать круг,чтобы он доходил например до определенного момента с одним цветом и далее шёл с другим? Подскажите,пожалуйста. Круг у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Опции темы

Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru