在GDI+ 中,我们是使用Graphics 的 DrawString 方法来在对象的表面绘制文本,其它还需要用到FontFamliy、Font、StringFormat等类来控制文本的特征。在前面我们已经了解过Font类,这里我们通过本文重点来了解DrawString方法以及StringFormat类。
一、用GDI+ 绘制文本需要经过下面步骤:
1、在窗体代码前面引入Drawing2D 命名空间
代码如下:
Imports System.Drawing.Drawing2D
2、获取图形对象的引用
下面代码是创建一个可以在PictureBox 控件表面绘制图形的图形对象:
Dim g as Graphics=PictureBox1.CreateGraphics
3、创建用于绘制文字的Brush对象
Dim mBrush As New SolidBrush(Color.Blue)
4、创建绘制文本时使用的字体对象Font
如下代码所示,我们创建一个宋体,20码的字体对象:
Dim mFont As New Font("宋体",20)
5、使用DrawString 方法在指定的位置绘制文本
使用DrawString 方法时,如果提供了一个矩形对象(RectangleF),则文本在这个指定的矩形中换行显示,否则将从提供的坐标起始绘制显示文本。如下代码所示:
g.DrawString("欢迎访问巧巧读书网",mFont,mBrush,10)
g.DrawString("欢迎访问巧巧读书网",New RectangleF(10,40,100,200))
完整代码如下(假设窗体上已经有了一个PictureBox 控件,一个Button 控件):
Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click
Dim g As Graphics = PictureBox1.CreateGraphics
Dim mBrush As New SolidBrush(Color.Blue)
Dim mFont As New Font("宋体",20)
g.DrawString("欢迎访问巧巧读书网",10)
'在矩形中绘制文本
g.DrawString("欢迎访问巧巧读书网",200))
End Sub
运行效果如下图一所示:
以上我们在知道了如何使用DrawString方法,下面我们看看如何格式化文本对象。
二、对齐文本
这本例中,我们初始化StringFormat 对象,并设置它的Alignment和LineAlignmen 属性,其中Alignmen 属性指定每行文本在矩形中水平位置,LineAlignment属性指定文本块在矩形中垂直位置,本例我们设置水平、垂直居中。
完整代码如下:
Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click
Dim g As Graphics = PictureBox1.CreateGraphics
Dim mText As String = "欢迎访问巧巧读书网"
Dim mBrush As New SolidBrush(Color.Red)
Dim mFont As New Font("宋体",16)
'创建字符格式化对象
Dim mStringFormat As New StringFormat
'创建矩形
Dim Rect As New Rectangle(0,250,120)
'设置StringFormat对象
mStringFormat.Alignment = StringAlignment.Center
mStringFormat.LineAlignment = StringAlignment.Center
'绘制文本
g.DrawString(mText,RectangleF.op_Implicit(Rect),mStringFormat)
'绘制矩形
Dim mPen As New Pen(Color.Black)
g.DrawRectangle(mPen,Rect)
End Sub
运行后,效果如下图二所示:
三、设置制表位
我们是使用StringFormat 对象的SetTabStops 方法在指定的位置设置制表位。
下面示例,我们在每间隔70设置一个制表位,共设置三个。详细代码如下所示:
Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click
Dim g As Graphics = PictureBox1.CreateGraphics
Dim mText As String = "姓名" + ControlChars.Tab + "语文" + ControlChars.Tab + "数学" + ControlChars.Tab + "英语" + Chr(10)
mText = mText + "张三" + ControlChars.Tab + "95" + ControlChars.Tab + "80" + ControlChars.Tab + "91" + Chr(10)
mText = mText + "李四" + ControlChars.Tab + "90" + ControlChars.Tab + "88" + ControlChars.Tab + "92" + Chr(10)
mText = mText + "王五" + ControlChars.Tab + "10" + ControlChars.Tab + "89" + ControlChars.Tab + "100" + Chr(10)
mText = mText + "赵大" + ControlChars.Tab + "100" + ControlChars.Tab + "80" + ControlChars.Tab + "91" + Chr(10)
Dim mBrush As New SolidBrush(Color.Red)
Dim mFont As New Font("宋体",12)
'创建字符格式化对象
Dim mStringFormat As New StringFormat
'创建矩形
Dim Rect As New Rectangle(0,120)
'设置StringFormat对象的制表位
Dim Tabs() As Single = {70,70,70}
mStringFormat.SetTabStops(0,Tabs)
'绘制文本
g.DrawString(mText,Rect)
End Sub
运行后如下图三所示:
在SetTabStops 方法中,第一个参数表明数组中的第一个偏移量从0(边框的左边)开始测量,第二个参数是表示包含制表位偏移量的数组。
四、绘制垂直文本
我们是通过把DirectionVertical 赋值给 StringFormat 对象的FormatFlags 属性来实现垂直文本的绘制。
如下代码:
Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click
Dim g As Graphics = PictureBox1.CreateGraphics
Dim mText As String = "欢迎你访问巧巧读书网论坛"
Dim mBrush As New SolidBrush(Color.Red)
Dim mFont As New Font("宋体",120)
'设置StringFormat对象
mStringFormat.FormatFlags = StringFormatFlags.DirectionVertical
'绘制文本
g.DrawString(mText,Rect)
End Sub
运行后,如下图四所示:
DirectionVertical只是StringFormatFlags枚举值之一,我们还可以通过其它的枚举值来实现其它样式的文本。
本文就到这里结束了,在这里,我们主要是了解DrawString方法的用法以及StringFormat对象的一些典型属性的意义。请你继续关注我们巧巧读书网,在这里我们一起一步一步深入学习vb.net。