Visual Basic .NET/GDI+
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 图形函数提供坐标时,这些坐标属于世界坐标系。世界坐标系的单位由您定义,但默认情况下为像素。
世界变换将您的世界坐标转换为页面坐标。页面坐标可以使用不同的单位,但与设备无关。其想法是,用页面坐标表示的距离在监视器上查看或打印到页面上时应该是一样的。
页面变换将页面坐标转换为设备坐标。换句话说,页面变换确保无论将图像发送到哪个设备,图形输出都看起来一样。设备坐标通常为像素。
您可以指定一个平移矩阵,将您指定的点转换为最终输出。这种变换可以平移(偏移)、缩放、旋转或倾斜最终输出。这种变换称为仿射变换。
以前版本的 Visual Basic 使用缇作为度量单位。1,440 缇 = 1 英寸。但是,VB.NET 使用像素作为其度量单位。从缇转换为像素需要一个 Graphics 对象(因为您不知道每英寸点数)。因此,如果 XTwips
是以缇为单位的测量值,那么 XPixels
,以像素为单位的测量值,按如下方式计算(g
是相应的 Graphics
对象)。
XPixels = XTwips * g.DpiX / 1440
使用 g.DpiY
计算 Y 轴的坐标。