跳转到内容

Visual Basic .NET/GDI+

来自 Wikibooks,开放世界中的开放书籍

图形对象

[编辑 | 编辑源代码]

System.Drawing.Graphics 对象表示一个绘图表面。

要获取 PictureBox 控件的 Graphics 对象,请在 PictureBox 的 Paint() 事件中使用 PaintEventArgs 参数的 .Graphics 属性。

    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        Using g as Graphics = e.Graphics
            'use the methods of g to draw 
        End Using
    End Sub

要加载图像,然后在上面绘图,请使用 Graphics.FromImage()。

    Using MyImage As Bitmap = Bitmap.FromFile("C:\Temp\MyImage.BMP")
        Using g as Graphics = Graphics.FromImage(MyImage)
            'use the methods of g to draw 
        End Using
    End Using

.Save() 方法可以用来将 Bitmap 保存到文件或流中。注意:从文件创建的 Bitmap 对象会保持文件打开,并在对象使用时与文件链接。如果不想让 Bitmap 对象与文件链接,则需要先将文件复制到 MemoryStream 中。

绘图方法

[编辑 | 编辑源代码]

使用 Graphics.DrawLine 和 Graphics.DrawString 等方法绘制线条和文本。

Graphics.MeasureString 可以用来测量一段文本使用 .DrawString 输出时的高度或宽度。

简单缩放

[编辑 | 编辑源代码]

使用 Graphics.PageUnit 属性作为更改坐标系的一种简单方法。更复杂的变换和缩放将在下面描述。

世界、页面和设备坐标系

[编辑 | 编辑源代码]

当您向 VB.NET 图形函数提供坐标时,这些坐标属于世界坐标系。世界坐标系的单位由您定义,但默认情况下为像素。

世界变换将您的世界坐标转换为页面坐标。页面坐标可以使用不同的单位,但与设备无关。其想法是,用页面坐标表示的距离在监视器上查看或打印到页面上时应该是一样的。

页面变换将页面坐标转换为设备坐标。换句话说,页面变换确保无论将图像发送到哪个设备,图形输出都看起来一样。设备坐标通常为像素。

您可以指定一个平移矩阵,将您指定的点转换为最终输出。这种变换可以平移(偏移)、缩放、旋转或倾斜最终输出。这种变换称为仿射变换

从缇(Twips)转换

[编辑 | 编辑源代码]

以前版本的 Visual Basic 使用缇作为度量单位。1,440 缇 = 1 英寸。但是,VB.NET 使用像素作为其度量单位。从缇转换为像素需要一个 Graphics 对象(因为您不知道每英寸点数)。因此,如果 XTwips 是以缇为单位的测量值,那么 XPixels,以像素为单位的测量值,按如下方式计算(g 是相应的 Graphics 对象)。

    XPixels = XTwips * g.DpiX / 1440

使用 g.DpiY 计算 Y 轴的坐标。

华夏公益教科书