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

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Current »

!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