Добрый вечер!
Не дает мне покоя - круговая диаграмма... Хотелось бы построить ее (сектор), через координаты центра, радиус, и угол. Но либо я плохо искала, либо все таки такой процедуры в Лазарусе нет. Если ее нет, как с легкостью ее обойти. Для примера хочу построить диаграмму для такого примера...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.
Круговая диаграмма в Лазарус
Модератор: Модераторы
Как бы я знаю, про такую процедуру (метод)...Я не совсем понимаю, как посчитать StartX, StartY, EndX,EndY. Вот где у меня загвоздка)
Яра писал(а):Я не совсем понимаю, как посчитать 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
У вас нет необходимых прав для просмотра вложений в этом сообщении.
