Круговая диаграмма в Лазарус

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Круговая диаграмма в Лазарус

Сообщение Яра » 09.05.2018 01:08:16

Добрый вечер!
Не дает мне покоя - круговая диаграмма... Хотелось бы построить ее (сектор), через координаты центра, радиус, и угол. Но либо я плохо искала, либо все таки такой процедуры в Лазарусе нет. Если ее нет, как с легкостью ее обойти. Для примера хочу построить диаграмму для такого примера...https://ru.wikihow.com/%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D1%8C-%D0%BA%D1%80%D1%83%D0%B3%D0%BE%D0%B2%D1%83%D1%8E-%D0%B4%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%83.
Яра
новенький
 
Сообщения: 13
Зарегистрирован: 07.10.2017 00:43:31

Re: Круговая диаграмма в Лазарус

Сообщение скалогрыз » 09.05.2018 04:43:00

то что ты ищешь, это метод Pie у Canvas-а

можешь и готовые решения взять
скалогрыз
долгожитель
 
Сообщения: 1658
Зарегистрирован: 03.09.2008 02:36:48

Re: Круговая диаграмма в Лазарус

Сообщение Яра » 09.05.2018 10:16:00

Как бы я знаю, про такую процедуру (метод)...Я не совсем понимаю, как посчитать StartX, StartY, EndX,EndY. Вот где у меня загвоздка)
Яра
новенький
 
Сообщения: 13
Зарегистрирован: 07.10.2017 00:43:31

Re: Круговая диаграмма в Лазарус

Сообщение скалогрыз » 09.05.2018 14:51:11

Яра писал(а):Я не совсем понимаю, как посчитать StartX, StartY, EndX,EndY. Вот где у меня загвоздка)

тригонометрия:
x = cos(a)*R; y = sin(a)*R;

в случае с Pie() придётся к этим X и Y добавить ещё и координату левого верхнего угла (EllipseX1, EllipseY2).
что важно помнить, что сектор рисуется против часовой стрелки.

вот тут в примере, два сектора рисуются между самой верхней точкой окружности и самой правой точкой окружности.
и порядок передачи точек влияет на конечный результат.
Код: Выделить всё
procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Pie(100,100,200,200, 100+50,  100+0,  100+100, 100+50);

  Canvas.Pie(200,200,300,300, 200+100, 200+50, 200+50,  200+0);
end;


обрати внимание, что к каждой координате Start и End приходится прибавлять то же значение что в EllipseX1, EllipseY1
piepie.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
скалогрыз
долгожитель
 
Сообщения: 1658
Зарегистрирован: 03.09.2008 02:36:48


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru