原生矢量图表
THPDFChart 将数据系列、轴、主题、图例、标签和无障碍文本组合成可复用的图表模型,由 THPDFPage.DrawChart 渲染
渲染器直接发出 PDF 路径和文本运算符,因此图表在任何缩放级别都保持清晰,并且不创建 Image XObject
图表模型
THPDFChart 拥有其 THPDFChartSeries 实例和两个 THPDFChartAxis 对象,而每个系列以几何方式增长点存储,实现分摊常数时间追加
使用 THPDFChartKind 值调用 THPDFChart.AddSeries,然后通过 THPDFChartSeries.AddPoint 添加有限坐标
THPDFChart.ClearSeries 释放所有拥有的系列,而 THPDFChartSeries.Clear 保留系列配置并只移除其点
SeriesCount、Series、Count 和 Points 属性提供对模型的索引只读访问
系列与轴
hckLine绘制带可选矢量标记和点标签的连接路径hckBar围绕每个数值 X 坐标绘制分组柱,并在自动 Y 边界中包含零hckArea将每个系列对可见零基线闭合,并使用主题感知的混合填充hckPie将一个正值系列绘制为单独着色的矢量扇形hckScatter在数值坐标处绘制独立矢量标记
折线、柱状、面积和散点系列可以共享一个笛卡尔绘图区,而饼图必须恰好包含一个 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;