本组中的示例展示了如何在 GrapeCity.Documents.Drawing.GcGraphics 上绘制表格 (如GcBitmapGraphics、GcSvgGraphics等)与GrapeCity.Documents.Drawing.TableRenderer类。 TableRenderer 可以与 GrapeCity.Documents.Layout.Composition 命名空间中的类一起使用 绘制复杂的布局,包括表格、文本和图形。 绘制表格通常涉及以下步骤:
  1. 为表格创建一个矩形 (LayoutRect)。有两种可能的方法。 您可以使用 GrapeCity.Documents.Layout.Composition 命名空间中的辅助类, 或直接来自 GrapeCity.Documents.Layout 命名空间的类:
    • 如果使用辅助组合类:创建一个 Surface 对象,然后创建一个 View(例如,具有目标页面的大小)。 使用 View 对象创建将托管表的 Visual。 Visual 对象具有关联的 LayoutRect 对象。
    • 或者,如果直接使用布局类,则创建一个 LayoutHost 对象,然后创建一个 LayoutView 与目标页面的宽度和高度。使用 LayoutView 对象创建 LayoutRect。
  2. 为表LayoutRect 设置约束。您必须至少修复桌子的一个角。 然后将根据表格内容计算其他角的位置。 您还可以修复表格的两个角(例如,通过为其顶部、左侧和右侧设置约束)或全部四个角。 必须相应地选择传递给 TableRenderer 构造函数的fixedSides 参数的值。
  3. 创建一个 TableRenderer 对象,将 GcGraphics、LayoutRect 和其他参数传递给构造函数。号码 表行和列的数量以及表填充设置将传递给构造函数,并且以后无法更改。
  4. 如有必要,对某些列宽和行高应用额外的约束。默认最小列宽 最小行高可以传递给 TableRenderer 构造函数。
  5. 根据需要,使用文本格式、填充设置和其他调整创建 CellStyle 对象。通常创建起来很方便 基本单元格样式,然后基于它创建其他更具体的样式。
  6. 使用 TableRenderer.AddCell() 方法添加具有准备好的单元格样式和表格数据的表格单元格。一些细胞 可以跨越多个列和行。使用背景或前景样式的单元格可能会重叠多个常规单元格, 例如,显示突出显示的行。
  7. 如果需要,请调用 TableRenderer.AddMissingCells() 方法添加空单元格以填充表格中的任何空白。 否则,不会在空单元格周围绘制网格线。

指定所有约束并添加所有单元格后,如果您直接使用 LayoutHost 对象, 只需调用 TableRenderer.Render() 方法即可。它在传递给构造函数的 GcGraphics 对象上绘制表格。

或者,如果您创建了 Surface 和 Visual 对象,则必须执行一些额外的步骤:

  1. 调用TableRenderer.ApplyCellConstraints()方法来计算表格布局。
  2. Draw 委托附加到 Visual 对象。在其代码中,您需要将 GcGraphics.Transform 分配给 Visual.Layer.Surface.BaseTransform,然后执行TableRenderer.Render()方法。
  3. 现在您可以使用一个或多个表格和其他视觉效果来绘制 Surface。调用 Surface.Render() 方法, 将目标 GcGraphics 对象传递给它。
GrapeCity.Documents.Drawing.TableRenderer 示例: