Foxtable(狐表)用户栏目专家坐堂 → 怎么实现将生成的二维码图片叠加到兰花图片上,并另行保存的图片中 一并带上兰花和二维码的图片


  共有3652人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
怎么实现将生成的二维码图片叠加到兰花图片上,并另行保存的图片中 一并带上兰花和二维码的图片  发帖心情 Post By:2020/4/29 16:19:00 [只看该作者]

如何把已经生成的二维码 弄在图片上,然后生成一张带二维码的图片。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:二维码加入logo.zip
上述例子是参照论坛里面的二维码加入logo。

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

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

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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 ‘释放资源’

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)先绘制主图,再绘制二维码即可 ...  发帖心情 Post By:2020/4/29 17:25:00 [只看该作者]

按照先绘制主图 再绘制二维码  最后合成图的思路

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/29 17:39:00 [只看该作者]

可以,逻辑都一样的,想绘制什么就往里添加即可:http://www.foxtable.com/webhelp/topics/1482.htm

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)可以,逻辑都一样的,想绘制什么就往...  发帖心情 Post By: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 '释放资源'

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)可以,逻辑都一样的,想绘制什么就往...  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/30 8:39:00 [只看该作者]

如果要绘制文字,请直接看4楼帮助,根本不需要另外保存为什么图片,直接往图片里绘制文字即可。http://www.foxtable.com/webhelp/topics/1482.htm


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)如果要绘制文字,请直接看4楼帮助,根...  发帖心情 Post By:2020/4/30 13:40:00 [只看该作者]

专业报表生成图片  然后和主图重新绘制!

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+文件,没有看明白!

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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)

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)Dim img =  getimage(“c...  发帖心情 Post By:2020/4/30 18:06:00 [只看该作者]

有点蓝老师  现在已经初步实现了专业报表中的数据   绘制在主图上
有没有办法 把专业报表的那白色底  处理掉呢  遮挡了部分主图内容

当前代码如下:
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
图片点击可在新窗口打开查看


 回到顶部
总数 12 1 2 下一页