以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  GDI+如何绘制竖排文字?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=56955)

--  作者:pyh6918
--  发布时间:2014/9/15 22:30:00
--  GDI+如何绘制竖排文字?

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 = "我爱狐表"
g.DrawString(msg,fnt,Brushes.Red,10,10)
p.Repaint()

 

这段代码绘制的结果是:我爱狐表

 

如何达到竖向排列的结果:

 

 

谢谢!


--  作者:有点甜
--  发布时间:2014/9/15 22:36: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 = "我" & vbcrlf & "爱" & vbcrlf & "狐" & vbcrlf & "表"
g.DrawString(msg,fnt,Brushes.Red,10,10)
p.Repaint()
[此贴子已经被作者于2014-9-15 22:35:45编辑过]

--  作者:pyh6918
--  发布时间:2014/9/15 22:43:00
--  

网上找了个StringFormatFlags.DirectionVertical方法,不知道怎么用?

 

说是把这个做为参数放到位置的后面,但没成功。

[此贴子已经被作者于2014-9-15 22:45:58编辑过]

--  作者:pyh6918
--  发布时间:2014/9/15 22:45:00
--  

多谢甜版,这是个变通的方法。

 

这要重新整理字符串才行。


--  作者:有点甜
--  发布时间:2014/9/15 22:59: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 = "我爱狐表"
Dim newmsg As String = ""
For Each s As String In msg
    newmsg &= s & vbcrlf
Next
g.DrawString(newmsg,fnt,Brushes.Red,10,10)
p.Repaint()

--  作者:pyh6918
--  发布时间:2014/9/15 23:05:00
--  
多谢甜版,非常好!
--  作者:逛逛
--  发布时间:2014/9/16 9:09: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 = "我爱狐表"

 

 Dim fns As System.Drawing.StringFormat = New System.Drawing.StringFormat
 fns.FormatFlags = System.Drawing.StringFormatFlags.DirectionVertical

 

 


g.DrawString(msg,fnt,Brushes.Red,10,10,fns)
p.Repaint()