图形编程入门.doc_第1页
图形编程入门.doc_第2页
图形编程入门.doc_第3页
图形编程入门.doc_第4页
图形编程入门.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图形编程入门.NET Framework 4.5其他版本本节介绍如何在 Windows 窗体应用程序中开始使用 GDI+。下列主题演示如何完成一些 GDI+ 任务,如绘制和填充形状和文本。本节内容如何:创建用于绘制的 Graphics 对象演示如何创建Graphics对象以进行绘制。如何:创建钢笔演示如何创建钢笔。如何:设置钢笔颜色演示如何设置钢笔的颜色。如何:创建实心画笔描述如何创建实心画笔。如何:在 Windows 窗体上绘制线条演示如何绘制线条。如何:绘制空心形状描述如何绘制形状。如何:在 Windows 窗体上绘制实心矩形说明如何绘制矩形。如何:在 Windows 窗体上绘制实心椭圆演示如何绘制实心椭圆。如何:在 Windows 窗体上绘制文本描述如何绘制文本。如何:在 Windows 窗体上绘制垂直文本演示如何绘制竖排文本。如何:使用 GDI+ 呈现图像演示如何绘制图像。如何:创建特定形状的 Windows 窗体解释如何更改窗体的形状。如何:在 Windows 窗体中复制像素以减少闪烁说明如何将像素从一个区域复制到另一个区域。参考System.Drawing描述此命名空间并提供指向其所有成员的链接。System.Windows.Forms描述此命名空间并提供指向其所有成员的链接。如何:创建用于绘制的 Graphics 对象.NET Framework 4.5其他版本需要先创建Graphics对象,然后才可以使用 GDI+ 绘制线条和形状、呈现文本或显示与操作图像。Graphics对象表示 GDI+ 绘图表面,并且该对象是用于创建图形图像的对象。处理图形包括两个步骤:1. 创建Graphics对象。2. 使用Graphics对象绘制线条和形状、呈现文本或显示与操作图像。创建图形对象可以用各种方法创建图形对象。创建图形对象 在窗体或控件的Paint事件中接收对图形对象的引用,作为PaintEventArgs的一部分。在为控件创建绘制代码时,通常会使用此方法来获取对图形对象的引用。同样,您也可以在处理PrintDocument的PrintPage事件时获取作为PrintPageEventArgs的属性的图形对象。- 或 - 调用某控件或窗体的CreateGraphics方法以获取对Graphics对象的引用,该对象表示该控件或窗体的绘图图面。如果想在已存在的窗体或控件上绘图,请使用此方法。- 或 - 由从Image继承的任何对象创建Graphics对象。此方法在您需要更改已存在的图像时十分有用。下面的部分给出了有关这些过程的详细信息。Paint 事件处理程序中的 PaintEventArgs当对控件的PaintEventHandler编程或对PrintDocument的PrintPage编程时,需提供一个图形对象作为PaintEventArgs或PrintPageEventArgs的属性之一。获取对 Paint 事件的 PaintEventArgs 中 Graphics 对象的引用1. 声明Graphics对象。2. 分配变量以引用作为PaintEventArgs的一部分传递的Graphics对象。3. 插入代码来绘制窗体或控件。下面的示例演示了如何从Paint事件中的PaintEventArgs引用Graphics对象:C#C+VBPrivate Sub Form1_Paint(sender As Object, pe As PaintEventArgs) Handles _ MyBase.Paint Declares the Graphics object and sets it to the Graphics object supplied in the PaintEventArgs. Dim g As Graphics = pe.Graphics Insert code to paint the form here.End SubCreateGraphics 方法也可以使用控件或窗体的CreateGraphics方法来获取对Graphics对象的引用,该对象表示该控件或窗体的绘图图面。用 CreateGraphics 方法创建 Graphics 对象 调用要用于呈现图形的窗体或控件的CreateGraphics方法。C#C+VBDim g as Graphics Sets g to a Graphics object representing the drawing surface of the control or form g is a member of.g = Me.CreateGraphics从 Image 对象创建另外,可以从Image类派生的任何对象创建图形对象。从 Image 创建 Graphics 对象 调用Graphics.FromImage方法,提供要从其创建Graphics对象的 Image 变量的名称。下面的示例演示如何使用Bitmap对象:C#C+VBDim myBitmap as New Bitmap(C:Documents and SettingsJoePicsmyPic.bmp)Dim g as Graphics = Graphics.FromImage(myBitmap)说明只能从非索引 .bmp 文件(如 16 位、24 位和 32 位的 .bmp 文件)创建Graphics对象。索引 .bmp 文件的像素将索引保存到颜色表中,相比而言,非索引 .bmp 文件的每个像素保存一种颜色。绘制和操作形状与图像Graphics对象在创建后,可用于绘制线条和形状、呈现文本或显示与操作图像。与Graphics对象一起使用的主要对象有: Pen类 - 用于绘制线条、勾勒形状轮廓或呈现其他几何表示形式。 Brush类 - 用于填充图形区域,如实心形状、图像或文本。 Font类 - 提供有关在呈现文本时要使用什么形状的说明。 Color结构 - 表示要显示的不同颜色。使用创建的图形对象 使用上面列出的适当对象进行所需的绘制。有关更多信息,请参见下列主题:若要呈现请参见行如何:在 Windows 窗体上绘制线条形状如何:绘制空心形状Text如何:在 Windows 窗体上绘制文本图像如何:使用 GDI+ 呈现图像如何:创建钢笔.NET Framework 4.5其他版本此示例创建一个Pen对象。示例C#C+VBDim myPen As System.Drawing.PenmyPen = New System.Drawing.Pen(System.Drawing.Color.Tomato)可靠编程当使用完需要消耗系统资源的对象(如Pen对象)后,应对其调用Dispose。如何:设置钢笔颜色.NET Framework 4.5其他版本此示例更改预先存在的Pen对象的颜色。示例C#C+VBmyPen.Color = System.Drawing.Color.PeachPuff编译代码此示例需要: 名为myPen的Pen对象。可靠编程应在使用完需要消耗系统资源的对象(例如Pen对象)后,对其调用Dispose。如何:创建实心画笔.NET Framework 4.5其他版本此示例创建一个SolidBrush对象,Graphics对象可以用它来填充形状。示例C#C+VBDim myBrush As New System.Drawing.SolidBrush(System.Drawing.Color.Red)Dim formGraphics As System.Drawing.GraphicsformGraphics = Me.CreateGraphics()formGraphics.FillEllipse(myBrush, New Rectangle(0, 0, 200, 300)myBrush.Dispose()formGraphics.Dispose()可靠编程当使用完那些使用系统资源的对象(如 Brush 对象)后,应该对这些对象调用Dispose。如何:在 Windows 窗体上绘制线条.NET Framework 4.5其他版本此示例在窗体上绘制线条。通常,当您在窗体上进行绘制时,您使用PaintEventArgs的Graphics属性处理窗体的Paint事件和执行绘制,如此示例所示示例C#VB Dim pen As New Pen(Color.FromArgb(255, 0, 0, 0) e.Graphics.DrawLine(pen, 20, 10, 300, 100)编译代码前面的示例是为使用 Windows 窗体而设计的,它需要Paint事件处理程序的参数PaintEventArgse。可靠编程应始终对消耗系统资源的任何对象(如Pen对象)调用Dispose。如何:绘制空心形状.NET Framework 4.5其他版本此示例在窗体上绘制空心椭圆和空心矩形。示例C#C+VB Private Sub DrawEllipse() Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Red) Dim formGraphics As System.Drawing.Graphics formGraphics = Me.CreateGraphics() formGraphics.DrawEllipse(myPen, New Rectangle(0, 0, 200, 300) myPen.Dispose() formGraphics.Dispose() End Sub Private Sub DrawRectangle() Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Red) Dim formGraphics As System.Drawing.Graphics formGraphics = Me.CreateGraphics() formGraphics.DrawRectangle(myPen, New Rectangle(0, 0, 200, 300) myPen.Dispose() formGraphics.Dispose() End Sub如何:在 Windows 窗体上绘制实心矩形.NET Framework 4.5其他版本此示例在窗体上绘制实心矩形。示例C#C+VBDim myBrush As New System.Drawing.SolidBrush(System.Drawing.Color.Red)Dim formGraphics As System.Drawing.GraphicsformGraphics = Me.CreateGraphics()formGraphics.FillRectangle(myBrush, New Rectangle(0, 0, 200, 300)myBrush.Dispose()formGraphics.Dispose()编译代码不能在Load事件处理程序中调用此方法。如果已调整该窗体的大小或者其他窗体遮蔽了该窗体,则不会重绘所绘制的内容。若要自动重绘内容,应该重写OnPaint方法。可靠编程对任何消耗系统资源的对象(如Brush和Graphics对象)都应调用Dispose。如何:在 Windows 窗体上绘制实心椭圆.NET Framework 4.5其他版本此示例在窗体上绘制实心椭圆。示例C#C+VBDim myBrush As New System.Drawing.SolidBrush(System.Drawing.Color.Red)Dim formGraphics As System.Drawing.GraphicsformGraphics = Me.CreateGraphics()formGraphics.FillEllipse(myBrush, New Rectangle(0, 0, 200, 300)myBrush.Dispose()formGraphics.Dispose()编译代码不能在Load事件处理程序中调用此方法。如果已调整该窗体的大小或者其他窗体遮蔽了该窗体,则不会重绘所绘制的内容。若要自动重绘内容,应该重写OnPaint方法。可靠编程对任何消耗系统资源的对象(如Brush和Graphics对象)都应调用Dispose。如何:在 Windows 窗体上绘制文本.NET Framework 4.5其他版本下面的代码示例演示如何使用Graphics的DrawString方法在窗体上绘制文本。或者,可以使用TextRenderer在窗体上绘制文本。有关更多信息,请参见如何:用 GDI 绘制文本。示例C#C+VB Public Sub DrawString() Dim formGraphics As System.Drawing.Graphics = Me.CreateGraphics() Dim drawString As String = Sample Text Dim drawFont As New System.Drawing.Font(Arial, 16) Dim drawBrush As New _ System.Drawing.SolidBrush(System.Drawing.Color.Black) Dim x As Single = 150.0 Dim y As Single = 50.0 Dim drawFormat As New System.Drawing.StringFormat formGraphics.DrawString(drawString, drawFont, drawBrush, _ x, y, drawFormat) drawFont.Dispose() drawBrush.Dispose() formGraphics.Dispose() End Sub如何:在 Windows 窗体上绘制垂直文本.NET Framework 4.5其他版本下面的代码示例演示如何使用Graphics的DrawString方法在窗体上绘制竖排文字。示例C#C+VB Public Sub DrawVerticalString() Dim formGraphics As System.Drawing.Graphics = Me.CreateGraphics() Dim drawString As String = Sample Text Dim drawFont As New System.Drawing.Font(Arial, 16) Dim drawBrush As New _ System.Drawing.SolidBrush(System.Drawing.Color.Black) Dim x As Single = 150.0 Dim y As Single = 50.0 Dim drawFormat As New System.Drawing.StringFormat drawFormat.FormatFlags = StringFormatFlags.DirectionVertical formGraphics.DrawString(drawString, drawFont, drawBrush, _ x, y, drawFormat) drawFont.Dispose() drawBrush.Dispose() formGraphics.Dispose() End Sub如何:使用 GDI+ 呈现图像.NET Framework 4.5其他版本可以在应用程序中使用 GDI+ 呈现以文件形式存在的图像。可通过以下方式做到这一点:创建一个Image类(如Bitmap)的新对象,创建一个Graphics对象来引用要使用的绘图图面,然后调用Graphics对象的DrawImage方法。将在图形类所表示的绘图表面上绘制图像。可以在设计时使用图像编辑器创建和编辑图像文件,而在运行时使用 GDI+ 呈现图像。有关更多信息,请参见图标的图像编辑器。用 GDI+ 呈现图像1. 创建一个对象,该对象表示要显示的图像。此对象必须是从Image继承的类的成员,如Bitmap或Metafile。下面显示了一个示例:C#C+VB Uses the System.Environment.GetFolderPath to get the path to the current users MyPictures folder.Dim myBitmap as New Bitmap _ (System.Environment.GetFolderPath _ (System.Environment.SpecialFolder.MyPictures)2. 创建一个Graphics对象来表示要使用的绘图图面。有关更多信息,请参见如何:创建用于绘制的 Graphics 对象。C#C+VB Creates a Graphics object that represents the drawing surface of Button1.Dim g as Graphics = Button1.CreateGraphics3. 调用图形对象的DrawImage以呈现图像。必须同时指定要绘制的图像以及将绘制它的位置的坐标。C#C+VBg.DrawImage(myBitmap, 1, 1)如何:创建特定形状的 Windows 窗体.NET Framework 4.5其他版本此示例向窗体提供随该窗体一起调整大小的椭圆形状。示例C#C+VB Protected Overrides Sub OnPaint( _ByVal e As System.Windows.Forms.PaintEventArgs) Dim shape As New System.Drawing.Drawing2D.GraphicsPath shape.AddEllipse(0, 0, Me.Width, Me.Height) Me.Region = New System.Drawing.Region(shape) End Sub编译代码此示例需要: 对System.Windows.Forms和System.Drawing命名空间的引用。该示例重写OnPaint方法以更改窗体的形状。若要使用此代码,请将方法声明以及绘图代码复制到该方法中。如何:在 Windows 窗体中复制像素以减少闪烁.NET Framework 4.5其他版本在使一个简单图形产生动画效果时,用户有时可能会遇到闪烁或其他不需要的视觉效果。限制出现此问题的一种方法是对该图形使用“bitblt”进程。Bitblt 是颜色数据从像素原始矩形到像素目标矩形的“位块转换”。在 Windows 窗体中,bitblt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论