TXLSXChartLayout 为绘图区、图表或坐标轴标题以及图例保存一份保留字段信息的手动布局
声明
type
TXLSXChartLayoutTarget = (xlsxChartLayoutOuter, xlsxChartLayoutInner);
TXLSXChartLayoutMode = (xlsxChartLayoutFactor, xlsxChartLayoutEdge);
TXLSXChartLayout = class
property Enabled: Boolean;
property HasTarget: Boolean;
property HasXMode, HasYMode, HasWidthMode, HasHeightMode: Boolean;
property HasX, HasY, HasWidth, HasHeight: Boolean;
property Target: TXLSXChartLayoutTarget;
property XMode, YMode, WidthMode, HeightMode: TXLSXChartLayoutMode;
property X, Y, Width, Height: Double;
procedure ClearTarget;
procedure ClearXMode;
procedure ClearYMode;
procedure ClearWidthMode;
procedure ClearHeightMode;
procedure ClearX;
procedure ClearY;
procedure ClearWidth;
procedure ClearHeight;
procedure SetPositionAndSize(AX, AY, AWidth, AHeight: Double);
procedure Assign(Source: TXLSXChartLayout);
procedure Clear;
end;
坐标模型
X、Y、Width 和 Height 都是相对图表矩形归一化的值。边(Edge)的 X、Y 为左上角坐标,边宽、边高即右、下坐标;系数(factor)的 X、Y 在自动位置上做偏移,系数宽高则是相对图表的尺寸
模型会独立保留每个字段和模式。已加载的省略设置保持省略,无效的数字标记在保存时原样保留,渲染时则回退到自动几何
标题布局可以只包含 X 和 Y 并保留自动测量的尺寸;绘图区和图例布局则需要全部四个坐标
SetPositionAndSize 一次性赋全部四个值,把它们的模式标记为存在并启用布局;各个坐标的单独 setter 也会启用布局
模式与目标
| xlsxChartLayoutEdge | 相对图表边的位置,X 和 Y 默认采用 |
| xlsxChartLayoutFactor | 尺寸或偏移系数,宽和高默认采用 |
| Target | 内部或外部绘图区矩形,仅对 PlotAreaLayout 有意义 |
示例
TXLSXChartLayoutResolver 为分页、SVG、PDF、图像、预览、打印、查看器和 HTML 输出一次性解析标题、图例、内/外绘图区以及坐标轴标题的矩形。无效或不完整的几何设置保留自动矩形;有效但越界的矩形会移动到图表内最接近的位置,尺寸保持不变
ODF 转换把解析后的几何映射为图表的绝对距离。标题和图例使用 svg:x 与 svg:y,绘图区还要用到 svg:width 和 svg:height。手动 ODF 图例会省略 chart:legend-position,因为该属性会覆盖绝对坐标
示例
Chart.PlotAreaLayout.Target := xlsxChartLayoutInner;
Chart.PlotAreaLayout.SetPositionAndSize(0.12, 0.18, 0.72, 0.64);
Chart.TitleLayout.SetPositionAndSize(0.1, 0.02, 0.6, 0.12);
Chart.LegendLayout.SetPositionAndSize(0.2, 0.84, 0.6, 0.1);
请参阅