Foxtable(狐表)用户栏目专家坐堂 → [求助]利用GDI+可否实现字宽系数的调整


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

主题:[求助]利用GDI+可否实现字宽系数的调整

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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
[求助]利用GDI+可否实现字宽系数的调整  发帖心情 Post By:2019/5/23 14:20:00 [只看该作者]

现在手上一个要求是,文字填充到单元格,字高不变,但宽度要自适应,目前发现字宽系数是无法设置的,哪如何来实现把文字先转成图片,然后单元格绘图把文字图片填充进来,填充时,高度不变,宽度按单元格的来?

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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2019/5/23 15:22:00 [只看该作者]

自己顶一下,还请版主出手。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/23 15:37:00 [只看该作者]

没看懂为什么要怎样做,输入两个字,那就把字变形拉宽?输入10个字,就缩小?

 

 


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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2019/5/23 15:40:00 [只看该作者]

字体总长度不大于单元格时,字体不拉宽,输入10字,字体总长度大于单元格长度时,需要缩小让字体能显示全,但不可以换行,字高不变。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/23 16:00:00 [只看该作者]

参考

 

If e.Col.name = "第一列" AndAlso e.text > "" Then
    Dim g As Graphics = basemainform.creategraphics
    Dim fnt As New Font("宋体",9)
    Dim msg As String = e.text
    Dim sf As new StringFormat
    sf.Alignment = StringAlignment.Center
    sf.LineAlignment = StringAlignment.Center
    e.text = ""
    Dim size = g.MeasureString(msg, fnt, e.width)
    Dim bmp As new bitmap(size.width, e.height)
    g = Graphics.FromImage(bmp)
    g.DrawString(msg,fnt,Brushes.black,  new Rectangle(0, 0, size.width+1, e.height), sf)
    e.graphics.DrawImage(bmp,new Rectangle(e.x, e.y, e.width, e.height))
End If


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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2019/5/23 16:55:00 [只看该作者]

搞定了,谢版主。
If e.Col.name = "第一列" AndAlso e.text > "" Then
    Dim g As Graphics = basemainform.creategraphics
    Dim fnt As New Font("宋体",9)
    Dim msg As String = e.text
    Dim sf As new StringFormat
    sf.Alignment = StringAlignment.Center
    sf.LineAlignment = StringAlignment.Center
    'Dim size = g.MeasureString(msg, fnt, e.width)
    Dim size = g.MeasureString(msg, fnt)
    If e.width < size.width Then
        e.text = ""
        Dim bmp As new bitmap(size.width, e.height)
        g = Graphics.FromImage(bmp)
        g.DrawString(msg,fnt,Brushes.black,  new Rectangle(0, 0, size.width+1, e.height), sf)
        e.graphics.DrawImage(bmp,new Rectangle(e.x, e.y, e.width, e.height))
    End If
End If

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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2019/5/30 17:45:00 [只看该作者]

版主,专业报表中,这个是怎么实现的,整了一下午没有搞定。比如字高12,宽度大于70mm时图片就要缩放,高度不变,但宽度为70.

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/30 19:38:00 [只看该作者]

直接设置图片的宽度和拉伸属性,即可

 

http://www.foxtable.com/webhelp/scr/1182.htm

 


 回到顶部