以文本方式查看主题 - 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。
[此贴子已经被作者于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 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 \'释放资源\' 实现的效果图如下:
|