加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 22:43:47 所属栏目:大数据 来源:网络整理
导读:在GDI+ 中,我们是使用Graphics 的 DrawString 方法来在对象的表面绘制文本,其它还需要用到FontFamliy、Font、StringFormat等类来控制文本的特征。在前面我们已经了解过Font类,这里我们通过本文重点来了解DrawString方法以及StringFormat类。 一、用GDI+

在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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读