Foxtable(狐表)用户栏目专家坐堂 → 绘图添加文字背景留白


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

主题:绘图添加文字背景留白

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


加好友 发短信
等级:超级版主 帖子:106207 积分:540158 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/11 20:39:00 [显示全部帖子]

计算文字需要绘制的大小

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim g As Graphics = p.Graphics
Dim fnt As New Font("宋体",16)
Dim msg As String = "I Like Foxtable"
dim w as integer = 100 '需要绘制的宽度
Dim size As Object
size = g.MeasureString(msg, fnt, w)
Dim h As Integer = size.height ‘获取绘制指定字体和宽度的情况下需要的高度
g.FillRectangle(Brushes.Red,0,0,w+10,h+10
g.DrawString(msg,fnt,Brushes.green,10,10)
p.Repaint()

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


加好友 发短信
等级:超级版主 帖子:106207 积分:540158 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/12 11:33:00 [显示全部帖子]

只能是固定一个宽度,然后动态计算高度

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


加好友 发短信
等级:超级版主 帖子:106207 积分:540158 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/12 11:52:00 [显示全部帖子]

不能

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


加好友 发短信
等级:超级版主 帖子:106207 积分:540158 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/20 23:04:00 [显示全部帖子]

保存为bmp格式文件

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


加好友 发短信
等级:超级版主 帖子:106207 积分:540158 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/21 9:21:00 [显示全部帖子]

这个不是绘图的问题。是专业报表本身的问题,这个没有办法。

如果要在专业报表里使用,可以考虑直接在专业报表里绘制内容,不需要绘图板:http://www.foxtable.com/webhelp/topics/1232.htm
[此贴子已经被作者于2021/4/21 9:22:13编辑过]

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


加好友 发短信
等级:超级版主 帖子:106207 积分:540158 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/22 8:41:00 [显示全部帖子]


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


加好友 发短信
等级:超级版主 帖子:106207 积分:540158 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/22 13:49:00 [显示全部帖子]

Dim fl As String = ProjectPath & "无内容.jpg"
Dim doc As New PrintDoc '定义一个报表对象
Doc.PageSetting.Landscape = True '横向打印
Doc.PageSetting.LeftMargin = 10 '设置左边距
Doc.PageSetting.RightMargin = 10 '设置右边距
Doc.PageSetting.TopMargin = 10 '设置上边距
Doc.PageSetting.BottomMargin = 10 '设置下边距
Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight '设置排列方式
Dim img As Image
For i As Integer = 1 To 2
    Dim ra As New prt.RenderArea
    ra.Width = 138 '宽度53毫米
    ra.Height = 90 '高度24毫米
    ra.Style.Spacing.All = 0.2
    ra.Style.Borders.All = New prt.Linedef(0.3, Color.blue) '设置边框
    ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never '禁止水平分割
    ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never '禁止垂直分割
    Doc.Body.ChildRen.Add(ra) '将容器加入到报表中
    
    Dim rg As New prt.RenderGraphics()
    Dim g As Graphics = rg.Graphics
    img = getImage(fl)
    g.DrawImage(img,0,0)
    g.DrawString(msg,fnt,Brushes.white,100,105)
    rg.Height= "Parent.Height"
    rg.Width = "Auto"
    rg.Style.TextAlignHorz = prt.AlignHorzEnum.Center
    rg.Style.TextAlignVert = prt.AlignVertEnum.Center
    ra.Children.Add(rg)
    Dim w As Integer = (138 - 90 / img.Height * img.Width) / 2
    rg.x = w
Next
Doc.Preview() '预览

文字的位置要自己根据图片世界绘制大小动态设置绘制的位置,类似于上面的居中计算一样

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


加好友 发短信
等级:超级版主 帖子:106207 积分:540158 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/23 12:03:00 [显示全部帖子]

14楼代码我测试没有问题

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


加好友 发短信
等级:超级版主 帖子:106207 积分:540158 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/23 13:41:00 [显示全部帖子]

自己微调一下:g.DrawImage(getImage("point.png"),Vars("x")+1,Vars("y")+6)

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


加好友 发短信
等级:超级版主 帖子:106207 积分:540158 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/23 14:22:00 [显示全部帖子]

没有办法,只能做到差不多。如果要精确,建议使用专业的绘图软件绘制,然后在保存打印

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