以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  怎么实现将生成的二维码图片叠加到兰花图片上,并另行保存的图片中 一并带上兰花和二维码的图片  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=149357)

--  作者:李孝春
--  发布时间:2020/4/29 16:19:00
--  怎么实现将生成的二维码图片叠加到兰花图片上,并另行保存的图片中 一并带上兰花和二维码的图片
如何把已经生成的二维码 弄在图片上,然后生成一张带二维码的图片。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:二维码加入logo.zip
上述例子是参照论坛里面的二维码加入logo。

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

怎么实现将生成的二维码图片叠加到兰花图片上,并另行保存的图片中  一并带上兰花和二维码的图片

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

[此贴子已经被作者于2020/4/29 16:21:02编辑过]

--  作者:有点蓝
--  发布时间:2020/4/29 16:43:00
--  
先绘制主图,再绘制二维码即可

    Dim Bar As New BarCodeBuilder
    Bar.Symbology = Barpro.Symbology.QRCode
    Bar.Code = "某某内容"
    bar.SaveImage(ProjectPath & "Images\\test.wmf",300)

    Dim imgback As image = getimage(ProjectPath & "Images\\兰花.png")   \'主图
    Dim bmp As new bitmap(imgback.width, imgback.height)
    Dim g As System.Drawing.Graphics  = System.Drawing.Graphics.FromImage(bmp)
    g.DrawImage(imgback, 0, 0, imgback.Width, imgback.Height) ‘绘制主图’
    Dim img = bar.GetImage    ‘获取二维码图片’
    Dim x As Integer = imgback.Width - 120 ‘二维码图距离主图左边距
    Dim y As Integer = imgback.height - 120 ‘二维码图距离主图上边距
    g.DrawImage(img, x, y, 100, 100)     \'合并图片
    bmp.Save(ProjectPath & "Images\\test05.jpg") ‘保存
    bmp.dispose ‘释放资源’

--  作者:李孝春
--  发布时间:2020/4/29 17:25:00
--  回复:(有点蓝)先绘制主图,再绘制二维码即可 ...
按照先绘制主图 再绘制二维码  最后合成图的思路

是不是同理可以用  报表代码写一个报表内容  先绘制主图  在绘制报表  最后合成图的思路   将报表内容绘制在图片上呢?

--  作者:有点蓝
--  发布时间:2020/4/29 17:39:00
--  
可以,逻辑都一样的,想绘制什么就往里添加即可:http://www.foxtable.com/webhelp/topics/1482.htm
--  作者:李孝春
--  发布时间:2020/4/29 18:17:00
--  回复:(有点蓝)可以,逻辑都一样的,想绘制什么就往...
有点蓝老师  如果我先定义一个报表  里面有一个文本对象  然后绘制在主图上    红色部分怎么写呢?

Dim doc As New PrintDoc \'定义一个报表
Dim rx As prt.RenderText \'定义一个文本对象
Dim CurRow As Row = Tables("表A").Current

rx = new prt.RenderText
rx.Text = CurRow("ip")
rx.x = 51
rx.y = 36
doc.body.Children.Add(rx)
doc.SavePDF(ProjectPath & "Images\\" & Date.Today & "test.pdf")    只能保存为pdf或者html 不能直接保存为图片
  
Dim imgback As image = getimage(ProjectPath & "Images\\兰花.png")   \'主图
Dim bmp As new bitmap(imgback.width, imgback.height)
Dim g As System.Drawing.Graphics  = System.Drawing.Graphics.FromImage(bmp)
g.DrawImage(imgback, 0, 0, imgback.Width, imgback.Height) \'绘制主图\'
Dim img = doc.……   这个地方应该怎么写呢?
    \'获取二维码图片\'
Dim x As Integer = imgback.Width - 120 \'二维码图距离主图左边距
Dim y As Integer = imgback.height - 120 \'二维码图距离主图上边距
g.DrawImage(img, x, y, 100, 100)     \'合并图片
bmp.Save(ProjectPath & "Images\\" & Date.Today & "test05.jpg") \'保存
bmp.dispose \'释放资源\'

--  作者:李孝春
--  发布时间:2020/4/29 18:27:00
--  回复:(有点蓝)可以,逻辑都一样的,想绘制什么就往...
采用绘图板操作,并保存为图片,当前代码如下:无法将绘制后的图片叠加在主图上。
还得麻烦老师看看 
Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim g1 As Graphics = p.Graphics
Dim fnt As New Font("宋体",16)
Dim msg As String = "I Like Foxtable"
Dim msg1 As String = "I Like Foxtable"
g1.DrawString(msg,fnt,Brushes.Red,10,10)
p.Repaint()
p.Save(ProjectPath & "Images\\" & Date.Today & "test.png")

Dim imgback As image = getimage(ProjectPath & "Images\\兰花.png")   \'主图
Dim bmp As new bitmap(imgback.width, imgback.height)
Dim g As System.Drawing.Graphics  = System.Drawing.Graphics.FromImage(bmp)
g.DrawImage(imgback, 0, 0, imgback.Width, imgback.Height) \'绘制主图\'
Dim img = ProjectPath & "Images\\" & Date.Today & "test.png"   红色部分代码该怎么写呢?
    \'获取二维码图片\'
Dim x As Integer = imgback.Width - 120 \'二维码图距离主图左边距
Dim y As Integer = imgback.height - 120 \'二维码图距离主图上边距
g.DrawImage(img, x, y, 100, 100)     \'合并图片
bmp.Save(ProjectPath & "Images\\" & Date.Today & "test05.jpg") \'保存
bmp.dispose \'释放资源\'



运行报错

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.1.19.19
错误所在事件:窗口,窗口1,图片加上文本框,Click
详细错误信息:
重载决策失败,因为没有 Public“DrawImage”可以用这些参数调用:
    \'Public Sub DrawImage(image As System.Drawing.Image, destPoints As System.Drawing.Point(), srcRect As System.Drawing.Rectangle, srcUnit As System.Drawing.GraphicsUnit, imageAttr As System.Drawing.Imaging.ImageAttributes)\':
        与参数“image”匹配的参数无法从“String”转换为“Image”。
        与参数“destPoints”匹配的参数无法从“Integer”转换为“Point()”。
        与参数“srcRect”匹配的参数无法从“Integer”转换为“Rectangle”。
        与参数“imageAttr”匹配的参数无法从“Integer”转换为“ImageAttributes”。
    \'Public Sub DrawImage(image As System.Drawing.Image, destPoints As System.Drawing.PointF(), srcRect As System.Drawing.RectangleF, srcUnit As System.Drawing.GraphicsUnit, imageAttr As System.Drawing.Imaging.ImageAttributes)\':
        与参数“image”匹配的参数无法从“String”转换为“Image”。
        与参数“destPoints”匹配的参数无法从“Integer”转换为“PointF()”。
        与参数“srcRect”匹配的参数无法从“Integer”转换为“RectangleF”。
        与参数“imageAttr”匹配的参数无法从“Integer”转换为“ImageAttributes”。
    \'Public Sub DrawImage(image As System.Drawing.Image, x As Integer, y As Integer, width As Integer, height As Integer)\':
        与参数“image”匹配的参数无法从“String”转换为“Image”。
    \'Public Sub DrawImage(image As System.Drawing.Image, x As Single, y As Single, srcRect As System.Drawing.RectangleF, srcUnit As System.Drawing.GraphicsUnit)\':
        与参数“image”匹配的参数无法从“String”转换为“Image”。
        与参数“srcRect”匹配的参数无法从“Integer”转换为“RectangleF”。
    \'Public Sub DrawImage(image As System.Drawing.Image, x As Integer, y As Integer, srcRect As System.Drawing.Rectangle, srcUnit As System.Drawing.GraphicsUnit)\':
        与参数“image”匹配的参数无法从“String”转换为“Image”。
        与参数“srcRect”匹配的参数无法从“Integer”转换为“Rectangle”。
    \'Public Sub DrawImage(image As System.Drawing.Image, x As Single, y As Single, width As Single, height As Single)\':
        与参数“image”匹配的参数无法从“String”转换为“Image”。

[此贴子已经被作者于2020/4/29 18:48:15编辑过]

--  作者:有点蓝
--  发布时间:2020/4/30 8:39:00
--  
如果要绘制文字,请直接看4楼帮助,根本不需要另外保存为什么图片,直接往图片里绘制文字即可。http://www.foxtable.com/webhelp/topics/1482.htm


--  作者:李孝春
--  发布时间:2020/4/30 13:40:00
--  回复:(有点蓝)如果要绘制文字,请直接看4楼帮助,根...
专业报表生成图片  然后和主图重新绘制!

Dim doc As New PrintDoc \'定义一个报表
Dim rt As New prt.RenderTable() \'定义一个表格对象
doc.Body.Children.Add(rt) \'将表格对象加入到报表中
rt.Style.GridLines.All = New prt.LineDef \'将网格线类型设为默认类型
rt.Height = 60 \'
rt.Rows.Count = 3
rt.Cols.Count = 3 
rt.Cols(0).Width = 40
doc.SaveImage("c:\\data\\abc.jpg")

需要注意的是,上面的代码执行后,你得到的图片文件名并不是"abc.jpg",而是:

abc_page1.jpg
abc_page2.jpg
abc_page3.jpg
...


此主题相关图片如下:捕获.jpg
按此在新窗口浏览图片

Dim imgback As image = getimage(ProjectPath & "Images\\兰花.png")   \'主图
Dim bmp As new bitmap(imgback.width, imgback.height)
Dim g As System.Drawing.Graphics  = System.Drawing.Graphics.FromImage(bmp)
g.DrawImage(imgback, 0, 0, imgback.Width, imgback.Height) \'绘制主图\'
Dim img =  这个部分怎么获取上述图片地址呢?
Dim x As Integer = imgback.Width - 120 \'二维码图距离主图左边距
Dim y As Integer = imgback.height - 120 \'二维码图距离主图上边距
g.DrawImage(img, x, y, 100, 100)     \'合并图片
bmp.Save(ProjectPath & "Images\\" & Date.Today & "test05.jpg") \'保存
bmp.dispose \'释放资源\'


直接绘制文字和线框  是不是只能用在绘图板组件中  不能直接用在图片框里面吧
Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim fnt As New Font("宋体",16)
Dim msg As String = "I Like Foxtable"
g1.DrawString(msg,fnt,Brushes.Red,10,10)
p.Repaint()
上述代码可以实现单行文字的绘制,如果有多行文字,需要绘制表格,怎么操作呢?帮助中的GDI+文件,没有看明白!

--  作者:有点蓝
--  发布时间:2020/4/30 14:15:00
--  
Dim img =  getimage(“c:\\data\\abc_page1.jpg”)

肯定可以直接绘制文字,不需要绘图板

Dim imgback As image = getimage(ProjectPath & "Images\\兰花.png")   \'主图
Dim bmp As new bitmap(imgback.width, imgback.height)
Dim g As System.Drawing.Graphics  = System.Drawing.Graphics.FromImage(bmp)
g.DrawImage(imgback, 0, 0, imgback.Width, imgback.Height) \'绘制主图\'
g.DrawString("xxxxxxxxxxxx",New Font("宋体",16),Brushes.Red,10,10)

--  作者:李孝春
--  发布时间:2020/4/30 18:06:00
--  回复:(有点蓝)Dim img =  getimage(“c...
有点蓝老师  现在已经初步实现了专业报表中的数据   绘制在主图上
有没有办法 把专业报表的那白色底  处理掉呢  遮挡了部分主图内容

当前代码如下:
Dim doc As New PrintDoc \'定义一个报表
doc.PageSetting.Width = 100 \'纸张宽度为100毫米
doc.PageSetting.Height = 60
Doc.PageSetting.LeftMargin = 10 \'设置左边距
Doc.PageSetting.RightMargin = 10 \'设置右边距
Doc.PageSetting.TopMargin = 5 \'设置上边距
Doc.PageSetting.BottomMargin = 5 \'设置下边距
doc.AutoRotate = False \'禁止自动旋转打印内容
Dim rt As New prt.RenderTable() \'定义一个表格对象
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中
rt.Style.TextAlignVert = prt.AlignVertEnum.Center \'垂直居中
rt.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.Left \'所有文本内容靠左对齐
\'rt.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'唯独第一列内容居中
rt.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止被垂直分割
rt.Width = "Parent.Width" \'对象宽度等于页面宽度
rt.Height = "Parent.Height" \'对象高度等于页面高度
Dim rs As New prt.RenderText() \'定义一个文本对象
rs.Text = "照片音视频标签" \'设置文本对象的内容
rs.Style.Font = New Font("宋体", 14 , FontStyle.Bold) \'设置文本对象的字体
rs.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'文本内容水平居中
doc.Body.Children.Add(rs) \'将文本对象加入到表格中

doc.Body.Children.Add(rt) \'将表格对象加入到报表中
rt.Style.GridLines.All = New prt.LineDef \'将网格线类型设为默认类型
rt.Height = 40 \'
rt.Rows.Count = 5
rt.Cols.Count = 2
rt.Cols(0).Width = 20
rt.Cells(0,0).text = "时间" 
rt.Cells(0,1).text = Format(Date.today ,"yyyy年MM月dd日")
rt.Cells(1,0).text = "地点" 
rt.Cells(1,1).text = "珠藏" 
rt.Cells(2,0).text = "人物" 
rt.Cells(2,1).text ="曹刚"
rt.Cells(3,0).text = "说明" 
rt.Cells(3,1).text = "2020年4月30日,曹刚到珠藏镇新兴村开展生态环境保护工作调研!" 
rt.Cells(3,1).Style.TextAlignHorz = prt.AlignHorzEnum.Left 
rt.Cells(4,0).text = "作者" 
rt.Cells(4,1).text ="曹刚"
rt.Rows(3).Height=20

\'doc.Preview
doc.SaveImage("c:\\data\\abc.png")
Dim imgback As image = getimage(ProjectPath & "Images\\兰花.png")   \'主图
Dim bmp As new bitmap(imgback.width, imgback.height)
Dim g As System.Drawing.Graphics  = System.Drawing.Graphics.FromImage(bmp)
g.DrawImage(imgback, 0, 0, imgback.Width, imgback.Height) \'绘制主图\'
Dim img =  getimage("c:\\data\\abc_page1.png")
Dim x As Integer = imgback.Width - 200 \'二维码图距离主图左边距
Dim y As Integer = imgback.height - 160 \'二维码图距离主图上边距
g.DrawImage(img, x, y, 200, 160)     \'合并图片
bmp.Save(ProjectPath & "Images\\" & Date.Today & "test05.jpg") \'保存
bmp.dispose \'释放资源\'

实现的效果图如下:

图片点击可在新窗口打开查看此主题相关图片如下:2020-04-30test05.jpg
图片点击可在新窗口打开查看