以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [报表] 专业报表图片及水印问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=15002)

--  作者:don
--  发布时间:2011/12/9 13:49:00
--  [报表] 专业报表图片及水印问题
我想在专业报表中加入一图片,图片可分为如图所示四部分.

现在的问题是:分别加入四部分好,还是一次性把此图片作为水印好?把整张图片作水印,有时可见图片,有时预览不到,苦恼?



图片点击可在新窗口打开查看此主题相关图片如下:水印.jpg
图片点击可在新窗口打开查看



Dim doc As New PrintDoc \'定义一个报表对象
Doc.PageSetting.LeftMargin = 0 \'设置左边距
Doc.PageSetting.RightMargin=0
Doc.PageSetting.TopMargin = 0
Doc.PageSetting.BottomMargin = 0

Dim rm As New prt.RenderImage \'定义一个图片对象
rm.Image = GetImage("水印.JPG") \'设置图片
rm.Width = "Parent.Width" \'宽度等于页面宽度
rm.Height ="Parent.Height" 
rm.Style.ImageAlign.StretchHorz = False \'禁止图片水平拉伸
Doc.WaterMark = rm
Doc.Preview() \'预览





--  作者:don
--  发布时间:2011/12/9 13:53:00
--  
是否和图片体积有关?
--  作者:狐狸爸爸
--  发布时间:2011/12/9 13:56:00
--  

用四个图片也行。

 

另: 把整张图片作水印,有时可见图片,有时预览不到?

 

这个问题毫无规律可循吗?只是有时?

 


--  作者:don
--  发布时间:2011/12/9 14:23:00
--  
以下是引用狐狸爸爸在2011-12-9 13:56:00的发言:

用四个图片也行。

 

另: 把整张图片作水印,有时可见图片,有时预览不到?

 

这个问题毫无规律可循吗?只是有时?

 


1.一样的代码,下图我就预览不到!没什规律,就是开启多程序,后来就是关闭了其它程序也不行.



图片点击可在新窗口打开查看此主题相关图片如下:000.jpg
图片点击可在新窗口打开查看

Dim doc As New PrintDoc \'定义一个报表对象
Doc.PageSetting.LeftMargin = 0 \'设置左边距
Doc.PageSetting.RightMargin=0
Doc.PageSetting.TopMargin = 0
Doc.PageSetting.BottomMargin = 0

Dim rm As New prt.RenderImage \'定义一个图片对象
rm.Image = GetImage("000.JPG") \'设置图片
rm.Width = "Parent.Width" \'宽度等于页面宽度
rm.Height ="Parent.Height" 
rm.Style.ImageAlign.StretchHorz = False \'禁止图片水平拉伸
Doc.WaterMark = rm
Doc.Preview() \'预览



2. 还有如图片过大,如代码设置不当,如没有

rm.Width = "Parent.Width" \'宽度等于页面宽度

rm.Height ="Parent.Height

预览不到不止,还要杀进程!


--  作者:狐狸爸爸
--  发布时间:2011/12/9 14:31:00
--  
呵呵,可能水印的图片不能太大,我们检查一下看看。
--  作者:don
--  发布时间:2011/12/9 14:40:00
--  
以下是引用狐狸爸爸在2011-12-9 14:31:00的发言:
呵呵,可能水印的图片不能太大,我们检查一下看看。
似乎和图片格式有关:我试了BMP格式10M多也没问题,其他JPG,PNG,PDF格式的有些100KB多也不行!


--  作者:狐狸爸爸
--  发布时间:2011/12/9 14:41:00
--  
收到。
--  作者:don
--  发布时间:2011/12/9 16:32:00
--  
Dim Ln1 As string = vbcrlf & vbcrlf

Dim doc As New PrintDoc \'定义一个报表对象

Doc.PageSetting.LeftMargin = 0 \'设置左边距
Doc.PageSetting.RightMargin=0
Doc.PageSetting.TopMargin = 0
Doc.PageSetting.BottomMargin = 0
Dim ra1,ra2,ra3,ra4 As New prt.RenderArea
Dim rm As New prt.RenderImage \'定义一个图片对象
rm.Image = GetImage("ST21.JPG") \'设置左侧图片
ra1.Width = 20 \'宽度53毫米
ra1.Height = 300 \'高度24毫米
ra1.Children.Add(rm)
doc.Body.Children.Add(ra1) \'将图片对象加入报表
doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight

rm = New prt.RenderImage
rm.Image = GetImage("ST1.JPG") \'设置页眉图片
ra2.Width = 188 \'宽度53毫米
ra2.Height = 295 \'高度24毫米

ra2.Style.Spacing.All = 5
ra2.Children.Add(rm)

Dim rt As New prt.RenderText \'定义一个文本对象

rt.Text = Ln1 & "XXXX" \'设置文本对象的内容
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中
rt.Style.Font = New Font("Tahoma",20, FontStyle.Bold)
ra2.Children.Add(rt)

rt = New prt.RenderText
rt.Text =  "ABC" 
rt.Style.Font = New Font("Tahoma",11)
ra2.Children.Add(rt)

rt = New prt.RenderText
rt.Text =Ln1 &  "XXXXXX" 
rt.Style.Font = New Font("Tahoma",11, FontStyle.Bold)
ra2.Children.Add(rt)

Dim tb As New prt.RenderTable() \'定义一个表格对象
ra2.Children.Add(tb) \'将表格对象加入到报表中
tb.Style.GridLines.All = New prt.Linedef(Color.Gray)
tb.Width = 175 \'表宽为150毫米
tb.Height = 20 \'表高为150毫米
tb.Rows.Count = 2 \'设置行数
tb.Cols.Count = 4 \'设置列数
tb.Cols(0).Width = 35
tb.Cols(1).Width = 50
tb.Cols(2).Width = 30
tb.Cols(3).Width = 55

Dim Ls As String() = {"Accounts 賬目","From 由 To 至","Monthly 月租","Total 合計"}
For c As Integer = 0 To 3
    rt= New prt.RenderText \'定义一个文本对象
    rt.Text = Ls(c) \'为文本对象设置内容
    rt.Style.Font = New Font("Tahoma",11, FontStyle.Bold)
    tb.Cells(0, c).RenderObject = rt \'将文本对象放置在单元格中
Next
tb.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第一行内容水平居中
tb.Rows(0).Style.TextAlignVert = prt.AlignVertEnum.Center \'第一行内容水平居中

Dim Ls3 As New List(of String)
Ls3.Add("Rental 租金")
Ls3.Add("01/12/2011-31/12/2011")
Ls3.Add("HK$888.00")
Ls3.Add("HK$888.00")
For c As Integer = 0 To 3
    rt = New prt.RenderText \'定义一个文本对象
    rt.Text = Ls3(c) \'为文本对象设置内容
    rt.Style.Font = New Font("Tahoma",11)
    tb.Cells(1, c).RenderObject = rt \'将文本对象放置在单元格中
Next
tb.Rows(1).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第一行内容水平居中
tb.Rows(1).Style.TextAlignVert = prt.AlignVertEnum.Center \'第一行内容水平居中


rt = New prt.RenderText
rt.Text =Ln1 &"DEEDDSSS" 
rt.Style.Font = New Font("Tahoma",11, FontStyle.Bold)
ra2.Children.Add(rt)


rt = New prt.RenderText
rt.Text =Ln1 & "DDDDDDDDEEEEEEE"
rt.Style.Font = New Font("Tahoma",11)
ra2.Children.Add(rt)

rt = New prt.RenderText
rt.Text =Ln1 & Ln1 & "敬註:" & Ln1 & "6 Month (5% off) Prepayment , 1 Year (10% off) Prepayment"

rt.Style.Font = New Font("Tahoma",12, FontStyle.Bold)
ra2.Children.Add(rt)



rt = New prt.RenderText
rt.Text =Ln1 & Ln1 & "DEEDDXXXXXXXXXXXX"
rt.Style.Font = New Font("Tahoma",11)
ra2.Children.Add(rt)

rt = New prt.RenderText
rt.Text ="ggggggggggggggggggggggggggggggg"
rt.x=2
rt.y=230
rt.Style.Font = New Font("標楷體",12, FontStyle.Bold)
ra2.Children.Add(rt)

rm = New prt.RenderImage
rm.Image = GetImage("STt.JPG") \'设置图片
rm.x=2
rm.y =267
ra2.Children.Add(rm)
doc.Body.Children.Add(ra2)



\'设置水印
rm = New prt.RenderImage
rm.Image = GetImage("222.BMP") \'设置图片
rm.x = 50
rm.y =100
rm.Style.ImageAlign.StretchHorz = True \'禁止图片水平拉伸
Doc.WaterMark = rm\'

rt =New prt.RenderText
rt.Text =""
rt.BreakAfter = prt.BreakEnum.Page

rm = New prt.RenderImage
rm.Image = GetImage("ST21.JPG") \'设置左侧图片
ra3.Width = 20 \'宽度53毫米
ra3.Height = 300 \'高度24毫米
ra3.Children.Add(rm)
doc.Body.Children.Add(ra3) \'将图片对象加入报表

Doc.Preview() \'预览


以上代码正常:图片ST21占据第2页左侧.

如我想于第2页再加入 页眉图片,代码如何?

--  作者:don
--  发布时间:2011/12/9 16:38:00
--  
试来试去:要不第2 页上没有,要不重叠在第1页页眉上
--  作者:lihe60
--  发布时间:2011/12/9 16:39:00
--  
以下是引用don在2011-12-9 16:32:00的发言:
Dim Ln1 As string = vbcrlf & vbcrlf

Dim doc As New PrintDoc \'定义一个报表对象

Doc.PageSetting.LeftMargin = 0 \'设置左边距
Doc.PageSetting.RightMargin=0
Doc.PageSetting.TopMargin = 0
Doc.PageSetting.BottomMargin = 0
Dim ra1,ra2,ra3,ra4 As New prt.RenderArea
Dim rm As New prt.RenderImage \'定义一个图片对象
rm.Image = GetImage("ST21.JPG") \'设置左侧图片
ra1.Width = 20 \'宽度53毫米
ra1.Height = 300 \'高度24毫米
ra1.Children.Add(rm)
doc.Body.Children.Add(ra1) \'将图片对象加入报表
doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight

rm = New prt.RenderImage
rm.Image = GetImage("ST1.JPG") \'设置页眉图片
ra2.Width = 188 \'宽度53毫米
ra2.Height = 295 \'高度24毫米

ra2.Style.Spacing.All = 5
ra2.Children.Add(rm)

Dim rt As New prt.RenderText \'定义一个文本对象

rt.Text = Ln1 & "XXXX" \'设置文本对象的内容
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中
rt.Style.Font = New Font("Tahoma",20, FontStyle.Bold)
ra2.Children.Add(rt)

rt = New prt.RenderText
rt.Text =  "ABC" 
rt.Style.Font = New Font("Tahoma",11)
ra2.Children.Add(rt)

rt = New prt.RenderText
rt.Text =Ln1 &  "XXXXXX" 
rt.Style.Font = New Font("Tahoma",11, FontStyle.Bold)
ra2.Children.Add(rt)

Dim tb As New prt.RenderTable() \'定义一个表格对象
ra2.Children.Add(tb) \'将表格对象加入到报表中
tb.Style.GridLines.All = New prt.Linedef(Color.Gray)
tb.Width = 175 \'表宽为150毫米
tb.Height = 20 \'表高为150毫米
tb.Rows.Count = 2 \'设置行数
tb.Cols.Count = 4 \'设置列数
tb.Cols(0).Width = 35
tb.Cols(1).Width = 50
tb.Cols(2).Width = 30
tb.Cols(3).Width = 55

Dim Ls As String() = {"Accounts 賬目","From 由 To 至","Monthly 月租","Total 合計"}
For c As Integer = 0 To 3
    rt= New prt.RenderText \'定义一个文本对象
    rt.Text = Ls(c) \'为文本对象设置内容
    rt.Style.Font = New Font("Tahoma",11, FontStyle.Bold)
    tb.Cells(0, c).RenderObject = rt \'将文本对象放置在单元格中
Next
tb.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第一行内容水平居中
tb.Rows(0).Style.TextAlignVert = prt.AlignVertEnum.Center \'第一行内容水平居中

Dim Ls3 As New List(of String)
Ls3.Add("Rental 租金")
Ls3.Add("01/12/2011-31/12/2011")
Ls3.Add("HK$888.00")
Ls3.Add("HK$888.00")
For c As Integer = 0 To 3
    rt = New prt.RenderText \'定义一个文本对象
    rt.Text = Ls3(c) \'为文本对象设置内容
    rt.Style.Font = New Font("Tahoma",11)
    tb.Cells(1, c).RenderObject = rt \'将文本对象放置在单元格中
Next
tb.Rows(1).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第一行内容水平居中
tb.Rows(1).Style.TextAlignVert = prt.AlignVertEnum.Center \'第一行内容水平居中


rt = New prt.RenderText
rt.Text =Ln1 &"DEEDDSSS" 
rt.Style.Font = New Font("Tahoma",11, FontStyle.Bold)
ra2.Children.Add(rt)


rt = New prt.RenderText
rt.Text =Ln1 & "DDDDDDDDEEEEEEE"
rt.Style.Font = New Font("Tahoma",11)
ra2.Children.Add(rt)

rt = New prt.RenderText
rt.Text =Ln1 & Ln1 & "敬註:" & Ln1 & "6 Month (5% off) Prepayment , 1 Year (10% off) Prepayment"

rt.Style.Font = New Font("Tahoma",12, FontStyle.Bold)
ra2.Children.Add(rt)



rt = New prt.RenderText
rt.Text =Ln1 & Ln1 & "DEEDDXXXXXXXXXXXX"
rt.Style.Font = New Font("Tahoma",11)
ra2.Children.Add(rt)

rt = New prt.RenderText
rt.Text ="ggggggggggggggggggggggggggggggg"
rt.x=2
rt.y=230
rt.Style.Font = New Font("標楷體",12, FontStyle.Bold)
ra2.Children.Add(rt)

rm = New prt.RenderImage
rm.Image = GetImage("STt.JPG") \'设置图片
rm.x=2
rm.y =267
ra2.Children.Add(rm)
doc.Body.Children.Add(ra2)



\'设置水印
rm = New prt.RenderImage
rm.Image = GetImage("222.BMP") \'设置图片
rm.x = 50
rm.y =100
rm.Style.ImageAlign.StretchHorz = True \'禁止图片水平拉伸
Doc.WaterMark = rm\'

rt =New prt.RenderText
rt.Text =""
rt.BreakAfter = prt.BreakEnum.Page

rm = New prt.RenderImage
rm.Image = GetImage("ST21.JPG") \'设置左侧图片
ra3.Width = 20 \'宽度53毫米
ra3.Height = 300 \'高度24毫米
ra3.Children.Add(rm)
doc.Body.Children.Add(ra3) \'将图片对象加入报表

Doc.Preview() \'预览


以上代码正常:图片ST21占据第2页左侧.

如我想于第2页再加入 页眉图片,代码如何?

好长