Нативные векторные диаграммы
THPDFChart объединяет серии данных, оси, темы, легенды, подписи и accessibility-текст в переиспользуемую модель диаграммы, которую отрисовывает THPDFPage.DrawChart
Renderer выдаёт операторы PDF path и text напрямую, поэтому диаграммы остаются чёткими на любом масштабе и не создают Image XObject
Модель диаграммы
THPDFChart владеет своими экземплярами THPDFChartSeries и двумя объектами THPDFChartAxis, при этом каждая серия наращивает хранилище точек геометрически, давая append с амортизированным постоянным временем
Вызовите THPDFChart.AddSeries со значением THPDFChartKind, затем добавляйте конечные координаты через THPDFChartSeries.AddPoint
THPDFChart.ClearSeries освобождает все принадлежащие серии, а THPDFChartSeries.Clear сохраняет конфигурацию серии и удаляет только её точки
Свойства SeriesCount, Series, Count и Points дают индексированный доступ на чтение к модели
Серии и оси
hckLineрисует соединённые пути с опциональными векторными маркерами и подписями точекhckBarрисует сгруппированные столбцы вокруг каждой числовой координаты X и включает ноль в автоматические границы YhckAreaзамыкает каждую серию на видимую нулевую базовую линию и использует заливку со смешением, зависящую от темыhckPieрисует одну серию с положительными значениями в виде отдельных раскрашенных векторных секторовhckScatterрисует независимые векторные маркеры в числовых координатах
Серии line, bar, area и scatter могут делить одну декартову область построения, а круговая диаграмма обязана содержать ровно одну серию hckPie
THPDFChartAxis.AutomaticMinimum и AutomaticMaximum выбирают границы по данным; отключение любого из свойств активирует соответствующее значение Minimum или Maximum
TickCount при рендеринге ограничивается диапазоном от 2 до 20, ShowGrid управляет линиями сетки осей, а NumberFormat задаёт числовой формат для делений и сгенерированных подписей
Внешний вид и подписи
THPDFChartTheme выбирает палитры hctLight, hctDark или hctMonochrome
THPDFChartLegendPosition выбирает отсутствие легенды, легенду справа или снизу через hclNone, hclRight и hclBottom
Каждая серия открывает Name, Kind, Color, LineWidth, ShowMarkers, ShowLabels и данные THPDFChartPoint с подписями
Задайте в Color настоящий TColor для явного цвета серии или оставьте значение по умолчанию, чтобы использовать активную палитру
Accessibility
THPDFChart.BuildAccessibleText возвращает явный AlternativeText, если он задан, либо строит ограниченную сводку из заголовка, серий, подписей, X и Y, с независимыми лимитами на точки и байты
Передайте structure parent в расширенную перегрузку DrawChart, чтобы обернуть всю диаграмму в тегированный Figure с записью Alt и bounding box layout
Structure parent обычно должен быть Document, Sect или элементом layout с figure, созданным для текущей страницы
Бюджеты и статистика
THPDFChartRenderOptions.Default разрешает 64 серии, 100 000 точек на серию, 1 000 000 суммарных точек, 512 видимых подписей, 64 точки в сгенерированном accessibility-тексте и 8 192 байта accessibility-текста
Некорректная геометрия, не конечные координаты, смешанное содержимое pie и превышение бюджетов по сериям или точкам вызывают исключение ещё до начала отрисовки
THPDFChartRenderStatistics сообщает отрисованные серии, точки, подписи, сегменты путей, тегирование figure и усечение подписей
Проходы валидации и рендеринга линейны по числу серий и точек, с ограниченной работой по подписям и accessibility-тексту
Поддерживающие типы
Публичная поверхность состоит из THPDFChartKind, THPDFChartTheme, THPDFChartLegendPosition, THPDFChartPoint, THPDFChartSeries, THPDFChartAxis, THPDFChart, THPDFChartRenderOptions и THPDFChartRenderStatistics
Пример
Chart := THPDFChart.Create;
try
Chart.Title := 'Quarterly revenue';
Chart.XAxis.Title := 'Quarter';
Chart.YAxis.Title := 'Revenue';
Chart.Theme := hctLight;
SeriesItem := Chart.AddSeries(hckBar, 'North');
SeriesItem.ShowLabels := True;
SeriesItem.AddPoint(1, 120, 'Q1');
SeriesItem.AddPoint(2, 175, 'Q2');
SeriesItem.AddPoint(3, 164, 'Q3');
Options := THPDFChartRenderOptions.Default;
Document.CurrentPage.DrawChart(
Chart, 48, 72, 500, 320, Options, Statistics
);
finally
Chart.Free;
end;
См. также: THPDFPage.DrawChart, Обзор векторной графики, Автоматическая структура PDF/UA