vb.net GDI+入门——使用DrawString显示文本


在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, 0, 10)

g.DrawString("欢迎访问巧巧读书网", mFont, mBrush, 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("欢迎访问巧巧读书网", mFont, mBrush, 0, 10)

'在矩形中绘制文本

g.DrawString("欢迎访问巧巧读书网", mFont, mBrush, New RectangleF(10, 40, 100, 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, 0, 250, 120)

'设置StringFormat对象

mStringFormat.Alignment = StringAlignment.Center

mStringFormat.LineAlignment = StringAlignment.Center

'绘制文本

g.DrawString(mText, mFont, mBrush, 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, 0, 250, 120)

'设置StringFormat对象的制表位

Dim Tabs() As Single = {70, 70, 70}

mStringFormat.SetTabStops(0, Tabs)

'绘制文本

g.DrawString(mText, mFont, mBrush, RectangleF.op_Implicit(Rect), mStringFormat)

'绘制矩形

Dim mPen As New Pen(Color.Black)

g.DrawRectangle(mPen, 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("宋体", 12)

'创建字符格式化对象

Dim mStringFormat As New StringFormat

'创建矩形

Dim Rect As New Rectangle(0, 0, 250, 120)

'设置StringFormat对象

mStringFormat.FormatFlags = StringFormatFlags.DirectionVertical

'绘制文本

g.DrawString(mText, mFont, mBrush, RectangleF.op_Implicit(Rect), mStringFormat)

'绘制矩形

Dim mPen As New Pen(Color.Black)

g.DrawRectangle(mPen, Rect)

End Sub

运行后,如下图四所示:

DirectionVertical只是StringFormatFlags枚举值之一,我们还可以通过其它的枚举值来实现其它样式的文本。

本文就到这里结束了,在这里,我们主要是了解DrawString方法的用法以及StringFormat对象的一些典型属性的意义。请你继续关注我们巧巧读书网,在这里我们一起一步一步深入学习vb.net。

 

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3