原生矢量图表

THPDFChart 将数据系列、轴、主题、图例、标签和无障碍文本组合成可复用的图表模型,由 THPDFPage.DrawChart 渲染

渲染器直接发出 PDF 路径和文本运算符,因此图表在任何缩放级别都保持清晰,并且不创建 Image XObject

图表模型

THPDFChart 拥有其 THPDFChartSeries 实例和两个 THPDFChartAxis 对象,而每个系列以几何方式增长点存储,实现分摊常数时间追加

使用 THPDFChartKind 值调用 THPDFChart.AddSeries,然后通过 THPDFChartSeries.AddPoint 添加有限坐标

THPDFChart.ClearSeries 释放所有拥有的系列,而 THPDFChartSeries.Clear 保留系列配置并只移除其点

SeriesCount、Series、Count 和 Points 属性提供对模型的索引只读访问

系列与轴

折线、柱状、面积和散点系列可以共享一个笛卡尔绘图区,而饼图必须恰好包含一个 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 以使用显式系列颜色,或保留默认值以使用活动调色板

无障碍

THPDFChart.BuildAccessibleText 在存在时返回显式 AlternativeText,否则构建有界的标题、系列、标签、X 和 Y 摘要,并带独立的点和字节限制

将结构父级传给扩展的 DrawChart 重载,将完整图表包裹在带 Alt 条目和布局边界框的标记 Figure 中

结构父级通常应为当前页面创建的 Document、Sect 或包含图形的布局元素

预算与统计

THPDFChartRenderOptions.Default 允许 64 个系列、每系列 100,000 个点、1,000,000 个总点、512 个可见标签、生成的无障碍文本中 64 个点以及 8,192 个无障碍字节

无效几何、非有限坐标、混合饼图内容以及超出的系列或点预算会在绘制开始前抛出异常

THPDFChartRenderStatistics 报告渲染的系列、点、标签、路径段、图形标记和标签截断

验证和渲染遍历在系列和点数量上呈线性,带有限标签和无障碍工作

支持类型

公共表面包含 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 结构