以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]报表表格高度的问题?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=159184)

--  作者:2425004926
--  发布时间:2020/12/16 10:12:00
--  [求助]报表表格高度的问题?
 如何能求出表格第二行的高度?我用文字加一行,再加一行也可以试验出来(比如1.3行高度多增一行是0.7,1.5行高度多增一行是0.8),用文本字体格式算出来的方法得出的数据不是很准确(h2),能否有更快的方法?

Dim doc As New PrintDoc \'定义一个报表
doc.PageSetting.Landscape = True \'横向打印
Doc.PageSetting.LeftMargin = 25 \'设置左边距
Doc.PageSetting.RightMargin = 20 \'设置右边距
Doc.PageSetting.TopMargin = 20 \'设置左边距
Doc.PageSetting.BottomMargin = 20 \'设置左边距
Dim rt As New prt.RenderTable() \'定义一个表格对象
rt.Style.GridLines.All = New prt.LineDef \'将网格线类型设为默认类型
rt.Width = 100 \'表宽为150毫米

Dim rx2 As New prt.RenderText \'创建一个文本
rx2.Width = 100
rx2.Text = "以及科学技术的发展,短视频术的发展,短视术的发展,短发展,短视短视术的发展,短发展,短视频频术的发展发展,短视术的发展发展,短视术的发展,短视视"
rx2.Style.Font = New Font("宋体", 15, FontStyle.Bold)  \'设置字体如果不设置字体,会出现导出PDF乱码
rx2.Style.LineSpacing = 150 \'1.5倍行距
doc.Body.Children.Add(rt) \'将表格对象加入到报表中
rt.Rows.Count = 2 \'设置行数
rt.Rows(0).Height = 134
rt.Cols.Count = 1 \'设置列数
rt.Cells(1,0).RenderObject = rx2

Dim g As Graphics = basemainform.CreateGraphics
g.PageUnit = GraphicsUnit.Millimeter \'设置计算打印高度时的单位为毫米,和专业报表的单位一致
Dim size As Object
size = g.MeasureString(rx2.Text, rx2.Style.Font, 100)  \'文本/样式/宽度
Dim h2 As Integer = size.height

Output.Show(rt.Height)
Output.Show(h2)
Doc.Preview() \'预览报表

--  作者:有点蓝
--  发布时间:2020/12/16 10:17:00
--  
只能这样,没有其它办法
--  作者:2425004926
--  发布时间:2020/12/16 11:54:00
--  
好的,谢谢!

--  作者:2425004926
--  发布时间:2020/12/17 9:22:00
--  
有没有方法返回文本rx2的行数?

--  作者:有点蓝
--  发布时间:2020/12/17 9:27:00
--  
MeasureString计算一个字符的高度,就是1行的高度,然后在计算rx2的整个高度,除以一行的高度就是行数
--  作者:2425004926
--  发布时间:2020/12/17 9:59:00
--  
 明白,谢谢!