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,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。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |