以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  用画板画好的印章图片能否放入专业报表的table里面?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=132400)

--  作者:ljh29206
--  发布时间:2019/3/21 9:31:00
--  用画板画好的印章图片能否放入专业报表的table里面?
\'印章的图片大小为60*60  Functions.Execute("印章","放置的控件","姓名","日期")
Dim x,y As Integer
Dim p1 As WinForm.Painter = Args(0)  \'第一个参数是控件
Dim xingming As String = Args(1)  \'第二个参数是姓名
Dim riqi As Date = Args(2)   \'第三个参数是日期
Dim pn As New Pen(Color.Red,3)
Dim fnt2 As New Font("宋体",12)  \'姓名字体10号
Dim fnt1 As New Font("宋体",10)  \'姓名字体10号
Dim fnt As New Font("宋体",8)  \'日期字体7号
Dim g1 As Graphics = p1.Graphics
Dim rqistr As String  = format(riqi,"yy.MM.dd")
If riqi > #01/01/2015# Then
g1.Clear(SystemColors.Control)
g1.DrawString(rqistr,fnt,Brushes.Red,6,25) \'日期在中间
\'g1.DrawRectangle(Pens.red,3,22,53,13)   \'画个方框
g1.DrawLine(Pens.Red,3,23,56,23)
g1.DrawLine(Pens.Red,3,36,56,36)
If xingming.Length =1 Then
g1.DrawString(xingming.SubString(0,1) ,fnt2,Brushes.Red,19,5)   
ElseIf xingming.Length =2 Then
    g1.DrawString(xingming.SubString(0,1) ,fnt2,Brushes.Red,19,5)   
    g1.DrawString(xingming.SubString(1,1) ,fnt2,Brushes.Red,19,38)   \'上下各1个字
ElseIf xingming.Length =3 Then
    g1.DrawString(xingming.SubString(0,1) ,fnt2,Brushes.Red,19,5)   
    g1.DrawString(xingming.SubString(1,2) ,fnt1,Brushes.Red,14,38)   \'上1个字下2个字
ElseIf xingming.Length = 4 Then
    g1.DrawString(xingming.SubString(0,2) ,fnt1,Brushes.Red,14,8)   
    g1.DrawString(xingming.SubString(2,2) ,fnt1,Brushes.Red,14,38)   \'上下各2个字
End If
g1.DrawEllipse(Pens.red,2,2,55,55)  \'画个圆圈
p1.Repaint()
Else
g1.Clear(SystemColors.Control)
p1.Repaint()
End If

请教以上是 在画板里面画印章  ,请问如何放入到 报表里面?

--  作者:有点蓝
--  发布时间:2019/3/21 10:30:00
--  

Painter

Painter表示绘图板,我们可以通过代码在其中绘制图形。
Painter采用GDI+绘制图形,GDI+的内容很多,可以写成一本厚厚的书,我们不可能在这里详细地介绍GDI+,但是会介绍其中最基础的部分。

属性

  • Graphics

    返回一个Graphics对象,我们所有的图形绘都是通过这个对象来完成的。
     
  • Image

    返回绘制好的图形。
Dim doc As New PrintDoc \'定义一个报表对象
Dim
 rm As New prt.RenderImage \'定义一个图片对象
rm.Image = 
p1.Image \'设置图片
rm.Style.Borders.All = New prt.Linedef(1, Color.Red) \'设置边框
doc.Body.Children.Add(rm) 
\'将图片对象加入报表
Doc.Preview() 
\'预览


--  作者:ljh29206
--  发布时间:2019/3/21 10:55:00
--  
蓝版 ,问下能否 虚拟一个控件出来,先放着图片,再生成报表?


调用内部函数先在虚拟控件生成图片 
Functions.Execute("印章","放置的控件","姓名","日期")

这个虚拟的控件怎么定义? ,就是直接在命令窗口怎么调试,直接获取结果?

[此贴子已经被作者于2019/3/21 10:57:53编辑过]

--  作者:有点蓝
--  发布时间:2019/3/21 11:10:00
--  
无法虚拟,Foxtable的控件必须有一个窗口才能活。

专业报表不需要控件也可以画图的,参考:http://www.foxtable.com/webhelp/scr/1232.htm

--  作者:ljh29206
--  发布时间:2019/3/21 11:53:00
--  
Dim x,y As Integer
Dim p1 As New prt.RenderGraphics()
Dim xingming As String  = "周润发"  \'第二个参数是姓名
Dim riqi As Date    \'第三个参数是日期
riqi = #01/01/2019#
Dim pn As New Pen(Color.Red,3)
Dim fnt2 As New Font("宋体",12)  \'姓名字体10号
Dim fnt1 As New Font("宋体",10)  \'姓名字体10号
Dim fnt As New Font("宋体",8)  \'日期字体7号
Dim g1 As Graphics = p1.Graphics
Dim rqistr As String  = format(riqi,"yy.MM.dd")
If riqi > #01/01/2015# Then
    g1.DrawString(rqistr,fnt,Brushes.Red,6,25) \'日期在中间
    \'g1.DrawRectangle(Pens.red,3,22,53,13)   \'画个方框
    g1.DrawLine(Pens.Red,3,23,56,23)
    g1.DrawLine(Pens.Red,3,36,56,36)
    If xingming.Length =1 Then
        g1.DrawString(xingming.SubString(0,1) ,fnt2,Brushes.Red,19,5)
    ElseIf xingming.Length =2 Then
        g1.DrawString(xingming.SubString(0,1) ,fnt2,Brushes.Red,19,5)
        g1.DrawString(xingming.SubString(1,1) ,fnt2,Brushes.Red,19,38)   \'上下各1个字
    ElseIf xingming.Length =3 Then
        g1.DrawString(xingming.SubString(0,1) ,fnt2,Brushes.Red,19,5)
        g1.DrawString(xingming.SubString(1,2) ,fnt1,Brushes.Red,14,38)   \'上1个字下2个字
    ElseIf xingming.Length = 4 Then
        g1.DrawString(xingming.SubString(0,2) ,fnt1,Brushes.Red,14,8)
        g1.DrawString(xingming.SubString(2,2) ,fnt1,Brushes.Red,14,38)   \'上下各2个字
    End If
    g1.DrawEllipse(Pens.red,2,2,55,55)  \'画个圆圈
End If

doc.Body.Children.Add(p1)

蓝版 ,再请教下  
以上代码是OK


如果我 在报表里面  画了 一个table  怎么把P1赋值 进入 table 里面  我下边的写法错误,求指点
rt.Cells(0,0).Image = GetImage(p1)

--  作者:有点蓝
--  发布时间:2019/3/21 12:04:00
--  
参考:http://www.foxtable.com/webhelp/scr/1208.htm