Page tree
Skip to end of metadata
Go to start of metadata

!MISSING PHRASE 'Show All'!
!MISSING PHRASE 'Hide All'!
下面的内容描述了如何创建一个由三部分构成的页眉,并且给页眉添加背景色
创建由创建由3部分组成的页眉部分组成的页眉
本文展示了如何创建一个分为三列的页眉。本文的关键点如下:
在C1PrintDocument中创建一个一行三列的表格设置页眉中每个区域的的文本对齐方式
Style 类的TextAlignHorz 属性可以用来指定文本的水平对齐方式。你可以给TextAlignHorz 属性指定一个
AlignHorzEnum 类型的枚举值(左对齐(left),右对齐(right) 两端对齐(justify)或居中对齐
(center))。
下面的详细步骤展示了如何创建一个由三部分构成的页眉。

  1. 创建一个新的windows窗体应用程序。
  2. 在窗体上添加一个C1PrintPreview 控件。
  3. 在窗体上添加一个C1PrintDocument 组件--它会显示在窗体下方的组件托盘中。预览控件的默认名为

C1PrintPreview1,文档则是C1PrintDocument1。

  1. 将C1PrintPreview1 控件的Document 属性设置为C1PrintDocument1,随后程序运行时预览控件就会显示文档的内容。
  2. 双击窗体创建一个Form_Load 事件的处理程序--下面所有的代码都是写在这里面。这里我们会设置我们的文档对象。为页眉创建一个RenderTable 对象
  3. Visual Basic

    Visual Basic

    Me.C1PrintDocument1.StartDoc()
    Dim theader As New C1.C1Preview.RenderTable(Me.C1PrintDocument1)

    C#

    C#

    this.c1PrintDocument1.StartDoc(); C1.C1Preview.RenderTable theader = new
    C1.C1Preview.RenderTable(this.c1PrintDocument1);

  4. 向表格主体上添加一行,然后添加三个列,分为为页眉的左中右三个部分。我们用TextAlignHorz 属性来给页眉每一列上的文本指定对齐方式。我们会给页眉上的文本赋上新的字体样式。注意,在这个例子中,字体设为

Arial,字号为14pt。
Visual Basic

Visual Basic

' Set up alignment for the parts of the header. theader.Cells(0, 0).Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Left theader.Cells(0, 1).Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Center theader.Cells(0, 2).Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Right theader.CellStyle.Font = New Font("Arial", 14)

C#

C#

// Set up alignment for the columns of the header.
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="f235ea68-fb14-4bfc-982d-bc76ed257dc5"><ac:plain-text-body><![CDATA[theader.Cells[0, 0].Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Left; theader.Cells[0, 1].Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Center; theader.Cells[0, 2].Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Right; theader.CellStyle.Font = new Font("Arial", 14);

]]></ac:plain-text-body></ac:structured-macro>

  1. 我们要给页眉的各个列添加文本。将文档页眉对象上的RenderObject 属性设为theader。最后调用EndDoc 方法结束

Visual Basic

Visual Basic

theader.Cells(0, 0).Text = "Left part" theader.Cells(0, 1).Text = "Center part" theader.Cells(0, 2).Text = "Right part" Me.C1PrintDocument1.RenderBlock(theader)
Me.C1PrintDocument1.EndDoc()

C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="fa16948d-d925-444e-b841-d612f5bbadd7"><ac:plain-text-body><![CDATA[

theader.Cells[0, 0].Text = "Left part";

]]></ac:plain-text-body></ac:structured-macro>


theader.Cells[0, 1].Text = "Center part"; theader.Cells[0, 2].Text = "Right part"; this.c1PrintDocument1.RenderBlock(theader); this.c1PrintDocument1.EndDoc();


运行程序看一下:

程序运行时,你新建的由三部分构成的页眉会看起来跟下面图中的相似

当设置了背景颜色(Gold)后,页眉会看起来跟下面图中的相似

绘制水平线

!MISSING PHRASE 'Show All'!
!MISSING PHRASE 'Hide All'!
本文展示了如何在C1PrintDocument中绘制一条水平线。完整的步骤如下:

  1. 创建一个新的Windows窗体应用程序
  2. 在窗体上添加C1PrintPreviewControl 控件
  3. 在窗体上添加一个C1PrintDocument 组件--他会显示在窗体下方的组件托盘中。预览控件的默认名为

C1PrintPreview1,文档则是C1PrintDocument1

  1. 将C1PrintPreview1 控件的Document 属性设置为C1PrintDocument1,随后程序运行时预览控件就会显示文档的内容
  2. 双击窗体创建一个Form_Load 事件的处理程序--下面所有的代码都是写在这里面。
  3. 使用RenderLine 渲染对象可以在C1PrintDocument 中绘制一条线。它的两个主要属性就是两个点--线的开始和结束位置。因为我们要将线渲染到块状流布局中,而且还是水平的,我们要保持Y坐标下的这两个点的值为默认的0. 在X 坐标轴下,开始位置的值也为0。结束位置的值设为页面的宽度值。这样就创建了一个RenderLine 对象,它会在当前块在所对应的Y坐标轴位置上绘制一条横跨整个页面的水平线:

Visual Basic

Visual Basic

Me.C1PrintDocument1.StartDoc() Dim rl As New C1.C1Preview.RenderLine(Me.C1PrintDocument1) rl.X = Me.C1PrintDocument1.PageLayout.PageSettings.Width Dim ld As New C1.C1Preview.LineDef("4mm", Color.SteelBlue)
Me.C1PrintDocument1.RenderBlockHorzLine(rl.X, ld)
Me.C1PrintDocument1.EndDoc()

C#

C#

this.c1PrintDocument1.StartDoc(); C1.C1Preview.RenderLine rl = new C1.C1Preview.RenderLine(this.c1PrintDocument1); rl.X = this.c1PrintDocument1.PageLayout.PageSettings.Width; C1.C1Preview.LineDef ld = new C1.C1Preview.LineDef("4mm", Color.SteelBlue); this.c1PrintDocument1.RenderBlockHorzLine(rl.X, ld); this.c1PrintDocument1.EndDoc();

运行程序看一下:
你的文档看起来应该跟下图中的相似

创建页脚

!MISSING PHRASE 'Show All'!
!MISSING PHRASE 'Hide All'!
本文展示了如何创建一个带有两列内容的页脚。本文的关键点如下:
在C1PrintDocument中给一个带有多行多列的表格添加页脚 为每一页的底部设置页脚。
TableVectorCollection 类的Count 属性是用来给每一页的表格底部插入页脚的。 设置页脚每个部分中的行和列的合并跨度。
TableCell类的 SpanRows 和SpanCols属性用来指定行和列的合并跨度值。
为页脚的每个部分设置文本对齐方式。Style 类的TextAlignHorz 和TextAlignVert属性是用来指定文本的水平和垂直对齐方式的。你可以给TextAlignHorz 属性赋一个AlignHorzEnum 类型的枚举值(左对齐(left),右对齐(right)两端对齐(justify)或居中对齐(center)),或者给TextAlignVert 属性赋一个AlignVertEnum 类型的枚举值(居下对齐(bottom),居中对齐( center),上下对齐( justify), 或居上对齐( top))。

注意:注意:文章中的范例代码片段都是假设已经在代码文件中使用了"using C1.C1Preview;"(这是C#语法,其他语言也有等效的写法)指令,因此我们可以只使用类名(例如RenderText)而不必使用完全限定类型名
(C1.C1Preview.RenderText)。

完成如下步骤来创建一个由两部分构成的页脚

  1. 创建一个新的Windows窗体应用程序
  2. 从工具栏中添加一个C1PrintPreview 控件到你的窗体上。在窗体上添加一个C1PrintDocument 组件--他会显示在窗体下方的组件托盘中。预览控件的默认名为C1PrintPreview1,文档则是C1PrintDocument1。
  3. 将C1PrintPreview1 控件的Document 属性设置为C1PrintDocument1,随后程序运行时预览控件就会显示文档的内容

  1. 双击窗体创建一个Form_Load 事件的处理程序。在这里,我们会建立我们的文档对象。
  2. 将下面的代码添加到Form_Load事件处理程序中,创建一个用于页脚的RenderTable 对象,然后添加一个4列100行的表格,示例如下:

Visual Basic

Visual Basic

Dim rt1 As New C1.C1Preview.RenderTable(Me.C1PrintDocument1)
' Create a table with 100 rows, 4 columns, and text.
Dim r As Integer = 100
Dim c As Integer = 4
Dim row As Integer
Dim col As Integer
For row = 0 To r - 1 Step +1
For col = 0 To c - 1 Step +1
Dim celltext As C1.C1Preview.RenderText = New C1.C1Preview.RenderText(Me.C1PrintDocument1) celltext.Text = String.Format("Cell ({0},{1})", row, col) rt1.Cells(row, col).RenderObject = celltext Next
Next
' Add the table to the document.
Me.C1PrintDocument1.Body.Children.Add(rt1)

C#

C#

C1.C1Preview.RenderTable rt1 = new
C1.C1Preview.RenderTable(this.c1PrintDocument1);
// Create a table with 100 rows, 4 columns, and text.
const int r = 100; const int c = 4; for (int row = 0; row < r; ++row) { for (int col = 0; col < c; ++col) {
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="20e11d4e-2450-4373-8a65-6aca65b0709a"><ac:plain-text-body><![CDATA[ C1.C1Preview.RenderText celltext = new C1.C1Preview.RenderText(this.c1PrintDocument1); celltext.Text = string.Format("Cell ({0},{1})", row, col); rt1.Cells[row, col].RenderObject = celltext; }
]]></ac:plain-text-body></ac:structured-macro>
}
// Add the table to the document.
this.c1PrintDocument1.Body.Children.Add(rt1);

  1. 添加如下代码,将字体设为Arial,字号10pt,然后将背景色设为 柠檬透明色:

Visual Basic

Visual Basic

' Set up the table footer.
rt1.RowGroups(rt1.Rows.Count - 2, 2).PageFooter = True rt1.RowGroups(rt1.Rows.Count - 2, 2).Style.BackColor = Color.LemonChiffon rt1.RowGroups(rt1.Rows.Count - 2, 2).Style.Font = New Font("Arial", 10,
FontStyle.Bold)

C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="0ca90600-0467-4533-a57b-962185eb59a6"><ac:plain-text-body><![CDATA[

// Set up the table footer. rt1.RowGroups[rt1.Rows.Count - 2, 2].PageFooter = true; rt1.RowGroups[rt1.Rows.Count - 2, 2].Style.BackColor = Color.LemonChiffon; rt1.RowGroups[rt1.Rows.Count - 2, 2].Style.Font = new Font("Arial", 10,
]]></ac:plain-text-body></ac:structured-macro>
FontStyle.Bold);

这里我们利用Count 属性将页面的最后两行保留下来作为页脚使用,同时利用RowGroups 属性将这两行合并到了一起。随后,我们给页脚上的文本赋上了新的字体样式,给页脚上的单元格赋上新的背景色。

  1. 接下来,我们会利用TextAlignHorz 和TextAlignVert属性来设置页脚上每一列文本的对齐方式。我们会利用

SpanRows 和 SpanCols 属性将最后两行合并,将列合并为两列。最后调用Generate 方法来创建文档。
Visual Basic

Visual Basic

' Add table footer text.
rt1.Cells(rt1.Rows.Count - 2, 0).SpanRows = 2

rt1.Cells(rt1.Rows.Count - 2, 0).SpanCols = rt1.Cols.Count - 1   rt1.Cells(rt1.Rows.Count - 2, 0).Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Left    
rt1.Cells(rt1.Rows.Count - 2, 0).Style.TextAlignVert = 
C1.C1Preview.AlignVertEnum.Center    
Dim tf As C1.C1Preview.RenderText = New C1.C1Preview.RenderText(Me.C1PrintDocument1)    tf = CType(rt1.Cells(rt1.Rows.Count - 2, 0).RenderObject, C1.C1Preview.RenderText)  tf.Text = "This is a table footer."  <span style="color: #008000">' Add page numbers.</span>     rt1.Cells(rt1.Rows.Count - 2, 3).SpanRows = 2    rt1.Cells(rt1.Rows.Count - 2, 3).Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Right    
rt1.Cells(rt1.Rows.Count - 2, 3).Style.TextAlignVert = C1.C1Preview.AlignVertEnum.Center
<span style="color: #008000">' Tags (such as page no/page count) can be inserted anywhere in the document.</span>     
Dim pn As C1.C1Preview.RenderText = New C1.C1Preview.RenderText(Me.C1PrintDocument1)    pn = CType(rt1.Cells(rt1.Rows.Count - 2, 3).RenderObject, C1.C1Preview.RenderText)  pn.Text = "Page \[PageNo\] of \[PageCount\]" Me.C1PrintDocument1.Generate()



C#

// Add table footer text. rt1.Cells[rt1.Rows.Count - 2, 0].SpanRows = 2; rt1.Cells[rt1.Rows.Count - 2, 0].SpanCols = rt1.Cols.Count - 1; rt1.Cells[rt1.Rows.Count - 2, 0].Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Center;

rt1.Cells[rt1.Rows.Count - 2, 0].Style.TextAlignVert = C1.C1Preview.AlignVertEnum.Center;
((C1.C1Preview.RenderText)rt1.Cells[rt1.Rows.Count - 2, 0].RenderObject).Text = "This is a table footer.";
// Add page numbers. rt1.Cells[rt1.Rows.Count - 2, 3].SpanRows = 2; rt1.Cells[rt1.Rows.Count - 2, 3].Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Right;
rt1.Cells[rt1.Rows.Count - 2, 3].Style.TextAlignVert = C1.C1Preview.AlignVertEnum.Center;
// Tags (such as page no/page count) can be inserted anywhere in the document. ((C1.C1Preview.RenderText)rt1.Cells[rt1.Rows.Count - 2, 3].RenderObject).Text =
"Page [PageNo] of [PageCount]"; this.c1PrintDocument1.Generate();

运行程序看一下:
你新建的由两部分构成的页脚看起来应该跟下图相似

  • No labels