直线曲线和图形.docx

上传人:b****6 文档编号:15727006 上传时间:2023-07-07 格式:DOCX 页数:24 大小:74.52KB
下载 相关 举报
直线曲线和图形.docx_第1页
第1页 / 共24页
直线曲线和图形.docx_第2页
第2页 / 共24页
直线曲线和图形.docx_第3页
第3页 / 共24页
直线曲线和图形.docx_第4页
第4页 / 共24页
直线曲线和图形.docx_第5页
第5页 / 共24页
直线曲线和图形.docx_第6页
第6页 / 共24页
直线曲线和图形.docx_第7页
第7页 / 共24页
直线曲线和图形.docx_第8页
第8页 / 共24页
直线曲线和图形.docx_第9页
第9页 / 共24页
直线曲线和图形.docx_第10页
第10页 / 共24页
直线曲线和图形.docx_第11页
第11页 / 共24页
直线曲线和图形.docx_第12页
第12页 / 共24页
直线曲线和图形.docx_第13页
第13页 / 共24页
直线曲线和图形.docx_第14页
第14页 / 共24页
直线曲线和图形.docx_第15页
第15页 / 共24页
直线曲线和图形.docx_第16页
第16页 / 共24页
直线曲线和图形.docx_第17页
第17页 / 共24页
直线曲线和图形.docx_第18页
第18页 / 共24页
直线曲线和图形.docx_第19页
第19页 / 共24页
直线曲线和图形.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

直线曲线和图形.docx

《直线曲线和图形.docx》由会员分享,可在线阅读,更多相关《直线曲线和图形.docx(24页珍藏版)》请在冰点文库上搜索。

直线曲线和图形.docx

直线曲线和图形

直线、曲线和图形

.NETFramework4.5

其他版本

GDI+的矢量图形部分可用于绘制直线和曲线,可用于绘制和填充形状。

本节内容

向量图形概述

讨论矢量图形。

GDI+中的笔、直线和矩形

讨论绘制直线和矩形。

GDI+中的椭圆和弧线

定义弧形和椭圆并确定绘制这些形状所需的类。

GDI+中的多边形

定义多边形并确定绘制这些形状所需的类。

GDI+中的基数样条

定义基数样条并确定绘制这些形状所需的类。

GDI+中的贝塞尔样条

定义贝塞尔样条并确定绘制这些形状所需的类。

GDI+中的图形路径

描述路径以及如何创建和绘制这些路径。

GDI+中的画笔和实心形状

描述画笔类型以及如何使用这些画笔。

GDI+中的开放曲线和闭合曲线

定义开放曲线和闭合曲线以及如何绘制和填充这些曲线。

GDI+中的区域

描述与区域关联的方法。

在GDI+中限制绘制图面

描述剪辑以及如何使用剪辑。

用直线和曲线抗锯齿

定义抗锯齿以及在绘制直线和曲线时如何使用抗锯齿。

社区附加资源

向量图形概述

.NETFramework4.5

其他版本

GDI+在坐标系中绘制直线、矩形和其他形状。

 您可以从各种各样的坐标系统中选择,但默认坐标系统的原点是在左上角,并且x轴指向右边,y轴指向下边。

 默认坐标系统的度量单位是像素。

GDI+的构造块

计算机监视器是在一个点的矩形数组上创建其显示,这些点被称为图片元素或像素。

 各台监视器屏幕上显示的像素数量都是不同的,并且用户通常在一定程度上可以配置单独一台监视器上显示的像素数量。

在使用GDI+绘制直线、矩形或曲线时,需要提供有关要绘制的项目的某些关键信息。

 例如,可以通过提供两个点来指定一条直线,还可以通过提供一个点、高度和宽度来指定一个矩形。

 GDI+与显示设备驱动程序软件协同工作,以确定必须启用哪些像素来显示直线、矩形或曲线。

 下面的插图显示了已打开的用于显示从点(4,2)到点(12,8)的直线的像素。

在实践中,人们发现某些基本构造块对于创建二维图片尤其有用。

 下表中列出了GDI+支持的构造块:

∙行

∙矩形

∙椭圆

∙弧线

∙多边形

∙基数样条

∙贝塞尔样条

使用图形对象进行绘制的方法

GDI+中的 Graphics 类提供了绘制前面列表中的各项的方法:

DrawLine、DrawRectangle、DrawEllipse、DrawPolygon、DrawArc、DrawCurve(针对基数样条)和 DrawBezier。

 这些方法中的每一种都是重载的,即每种方法都支持几个不同的参数列表。

 例如,DrawLine 方法的一个变体接收一个 Pen 对象和四个整数,而 DrawLine 方法的另一个变体接收一个 Pen 对象和两个 Point 对象。

绘制直线、矩形和贝塞尔样条的方法具有多个伴随方法,可在一个调用中绘制若干个项:

DrawLines、DrawRectangles 和 DrawBeziers。

 DrawCurve 方法也有一个伴随方法 DrawClosedCurve,该伴随方法能够通过连接曲线的终点和起点的方式来闭合曲线。

Graphics 类的所有绘制方法与 Pen 对象共同工作。

 若要进行绘制,必须至少创建两个对象:

Graphics 对象和 Pen 对象。

 Pen 对象存储要绘制项的特性,如线宽和颜色。

 将 Pen 对象作为参数之一传递给绘制方法。

 例如,下面的示例演示 DrawLine 方法的一个变体接收一个 Pen 对象和四个整数,并绘制一个宽100、高50且左上角位于(20,10)的矩形:

C#

VB

myGraphics.DrawRectangle(myPen,20,10,100,50)

GDI+中的笔、直线和矩形

.NETFramework4.5

其他版本

若要用GDI+绘制直线,需要创建 Graphics 对象和 Pen 对象。

 Graphics 对象提供进行实际绘制的方法,Pen 对象存储特性,如直线的颜色、宽度和线型。

绘制直线

若要绘制直线,请调用 Graphics 对象的 DrawLine 方法。

 将 Pen 对象作为参数之一传递给 DrawLine 方法。

 下面的示例绘制了一条从点(4,2)到点(12,6)的直线:

C#

VB

myGraphics.DrawLine(myPen,4,2,12,6)

 

DrawLine 是 Graphics 类的一个重载方法,因此,有数种为其提供参数的方式。

 例如,可构造两个 Point 对象并将 Point 对象作为参数传递给 DrawLine 方法:

C#

VB

DimmyStartPointAsNewPoint(4,2)

DimmyEndPointAsNewPoint(12,6)

myGraphics.DrawLine(myPen,myStartPoint,myEndPoint)

 

构造钢笔

可以在构造 Pen 对象时指定某些特性。

 例如,有一种 Pen 构造函数允许您指定颜色和宽度。

 下面的示例绘制了一条从(0,0)到(60,30)宽度为2的蓝线:

C#

VB

DimmyPenAsNewPen(Color.Blue,2)

myGraphics.DrawLine(myPen,0,0,60,30)

 

虚线和线帽

Pen 对象也公开属性(如 DashStyle),这些属性可用于指定直线的特性。

 下面的示例绘制了一条从(100,50)到(300,80)的虚线:

C#

VB

myPen.DashStyle=DashStyle.Dash

myGraphics.DrawLine(myPen,100,50,300,80)

 

可以使用 Pen 对象的属性为直线设置更多特性。

 StartCap 属性和 EndCap 属性指定直线端点的外观;端点可以是平的、方形的、圆形的、三角形的或自定义的形状。

 LineJoin 属性用于指定连接的线相互间是斜接的(联接时形成锐角)、斜切的、圆形的还是截断的。

 下面的插图显示了具有不同的线帽和联接类型的直线。

绘制矩形

用GDI+绘制矩形与绘制直线类似。

 若要绘制矩形,需要 Graphics 对象和 Pen 对象。

 Graphics 对象提供 DrawRectangle 方法,Pen 对象存储特性(例如线宽和颜色)。

 将 Pen 对象作为参数之一传递给 DrawRectangle方法。

 下面的示例绘制了一个矩形,其左上角位于(100,50),宽度为80,高度为40:

C#

VB

myGraphics.DrawRectangle(myPen,100,50,80,40)

 

DrawRectangle 是 Graphics 类的一个重载方法,因此,有数种为其提供参数的方式。

 例如,可构造 Rectangle 对象并将 Rectangle 对象作为参数传递给 DrawRectangle 方法:

C#

VB

DimmyRectangleAsNewRectangle(100,50,80,40)

myGraphics.DrawRectangle(myPen,myRectangle)

 

Rectangle 对象具有用于处理和收集矩形相关信息的方法和属性。

 例如,Inflate 和 Offset 方法可更改矩形的大小和位置。

 IntersectsWith 方法判断矩形是否与另一给定矩形相交,Contains 方法判断一个给定点是否在该矩形内。

GDI+中的椭圆和弧线

.NETFramework4.5

其他版本

可以使用 Graphics 类的 DrawEllipse 和 DrawArc 方法轻松绘制椭圆和弧线。

绘制椭圆

若要绘制椭圆,需要有 Graphics 对象和 Pen 对象。

 Graphics 对象提供 DrawEllipse 方法,Pen 对象存储用于呈现椭圆的线条特性,如宽度和颜色。

 Pen 对象作为参数之一传递给 DrawEllipse 方法。

 传递给 DrawEllipse 方法的其余参数指定椭圆的边框。

 下面的插图显示了一个椭圆,以及它的边框。

下面的示例绘制了一个椭圆;边框的宽度为80,高度为40,左上角位于(100,50):

C#

VB

myGraphics.DrawEllipse(myPen,100,50,80,40)

 

DrawEllipse 是一种 Graphics 类的重载方法,因此您可以通过多种方式为它提供参数。

 例如,您可以构造 Rectangle 并将 Rectangle 作为参数传递给 DrawEllipse 方法:

C#

VB

DimmyRectangleAsNewRectangle(100,50,80,40)

myGraphics.DrawEllipse(myPen,myRectangle)

 

绘制弧线

弧线是椭圆的一部分。

 若要绘制弧线,可调用 Graphics 类的 DrawArc 方法。

 除了 DrawArc 需要有起始角度和仰角以外,DrawEllipse 方法的参数与 DrawArc 方法的参数相同。

 下面的示例绘制了一个起始角为30度、仰角为180度的弧线:

C#

VB

myGraphics.DrawArc(myPen,100,50,140,70,30,180)

 

下面的插图显示了弧线、椭圆和边框。

GDI+中的多边形

.NETFramework4.5

其他版本

多边形是有三条或更多直边的闭合图形。

 例如,三角形是有三条边的多边形,矩形是有四条边的多边形,五边形是有五条边的多边形。

 下面的插图显示了几个多边形。

绘制多边形

若要绘制多边形,需要 Graphics 对象、Pen 对象和 Point(或 PointF)对象数组。

 Graphics 对象提供 DrawPolygon 方法。

 Pen 对象存储用于呈现多边形的线条特性,例如宽度和颜色,Point 对象数组存储将由直线连接的点。

 Pen 对象和 Point 对象数组作为参数传递给 DrawPolygon 方法。

 下面的示例绘制了一个三条边的多边形。

 请注意, myPointArray 中只有三个点:

(0,0)、(50,30)和(30,60)。

 DrawPolygon 方法通过绘制一条从(30,60)回到起点(0,0)的直线来自动闭合多边形。

C#

VB

DimmyPointArrayAsPoint()=_

{NewPoint(0,0),NewPoint(50,30),NewPoint(30,60)}

myGraphics.DrawPolygon(myPen,myPointArray)

 

下面的插图显示了该多边形。

GDI+中的基数样条

.NETFramework4.5

其他版本

基数样条是一连串单独的曲线,这些曲线连接起来形成一条较大的曲线。

 样条由点的数组和张力参数指定。

 基数样条平滑地经过数组中的每个点;曲线的陡度上没有尖角和突然的变化。

 下面的插图显示了一组点和经过这一组点中每一点的基数样条。

物理和数学样条

物理样条是一块薄木片或其他有弹性的物质。

 在数学样条出现之前,设计者利用物理样条绘制曲线。

 设计者把样条放置在一张纸上并锚定到一组给定的点上。

 然后,设计者就可以用钢笔沿样条绘制出一条曲线。

 一组给定的点可以产生各种各样的曲线,这取决于物理样条的属性。

 例如,极不易弯曲的样条与非常有弹性的样条产生的曲线是不同的。

数学样条的公式基于弹性棒条的属性,因此数学样条产生的曲线与物理样条曾产生的曲线是相同的。

 正如不同张力的物理样条通过一组给定的点将产生不同的曲线一样,张力参数值不同的数学样条在一组给定的点上将产生不同的曲线。

 下面的插图显示了经过同一组点的四个基数样条。

 每个样条都显示了张力。

 0张力相当于无穷的物理张力,以强制曲线在点与点之间采取最短的路径(直线)。

 张力为1对应于没有物理张力,使样条采用最小完全弯曲的路径。

 张力值大于1的曲线就像压缩的弹簧,被挤压着采用较长的路径。

上面插图中的四个样条共享起点处的同一条切线。

 该切线是从起始点到沿着曲线的下一点绘制的一条线。

 同样,在结束点处共享的切线是从结束点到沿着曲线的上一点绘制的一条线。

若要绘制基数样条,需要 Graphics 类的实例、Pen 和 Point 对象数组。

Graphics 类的实例提供了 DrawCurve 方法以用于绘制样条,而 Pen 存储样条的特性(如线宽和颜色)。

 Point 对象数组存储曲线将要经过的点。

 下面的代码示例演示如何绘制经过 myPointArray 中的点的基数样条。

 第三个参数是张力。

C#

VB

myGraphics.DrawCurve(myPen,myPointArray,1.5F)

GDI+中的贝塞尔样条

.NETFramework4.5

其他版本

贝塞尔样条是由四个点指定的曲线:

两个端点(p1和p2)和两个控制点(c1和c2)。

 曲线开始于p1,结束于p2。

 该曲线不经过控制点,但是控制点的作用像磁铁一样,在某些方向上拉拽曲线并影响曲线弯曲的方式。

 下面的插图显示一个贝塞尔曲线及其端点和控制点。

该曲线始于p1并向控制点c1移动。

 该曲线p1处的切线是从p1到c1绘制的线。

 端点p2处的切线为从c2到p2绘制的线。

绘制贝塞尔样条

若要绘制贝塞尔样条,需要 Graphics 类的实例和 Pen。

 Graphics 类的实例提供 DrawBezier 方法,而 Pen 存储用于呈现曲线的线的特性,如宽度和颜色。

 将 Pen 作为参数之一传递给 DrawBezier 方法。

 传递给DrawBezier 方法的其他参数是端点和控制点。

 下面的示例绘制了一个贝塞尔样条:

起点为(0,0),控制点为(40,20)和(80,150),终点为(100,10):

C#

VB

myGraphics.DrawBezier(myPen,0,0,40,20,80,150,100,10)

 

下面的插图显示了曲线、控制点和两条切线。

贝塞尔样条最初是由PierreBézier为汽车行业设计而提出的。

 许多类型的计算机辅助设计都证明了它们十分有用,它们也用于定义字体的轮廓。

 贝塞尔样条可生成各种各样的形状,下面的插图显示了其中的一部分。

GDI+中的图形路径

.NETFramework4.5

其他版本

路径是通过组合直线、矩形和简单的曲线而形成的。

 请回忆一下 向量图形概述 中的内容,以下基本构造块已被证明对于绘制图形是非常有用的:

∙行

∙矩形

∙椭圆

∙弧线

∙多边形

∙基数样条

∙贝塞尔样条

在GDI+中,GraphicsPath 对象您允许将这些构造块序列收集到一个单元中。

 调用一次 Graphics 类的 DrawPath 方法,就可以绘制出整个序列的直线、矩形、多边形和曲线。

 下面的插图显示了通过组合一条直线、一段弧、一个贝塞尔样条和一个基数样条而创建的路径。

使用路径

GraphicsPath 类提供了下列方法来创建要绘制的项序列:

AddLine、AddRectangle、AddEllipse、AddArc、AddPolygon、AddCurve(针对基数样条)和 AddBezier。

 这些方法中的每一种都是重载的,即每种方法都支持几个不同的参数列表。

 例如,AddLine 方法的一个变体接收四个整数,AddLine 方法的另一个变体则接收两个 Point 对象。

将直线、矩形和贝塞尔样条添加到路径的方法具有多个伴随方法,这些伴随方法在一次调用中将多个项添加到路径:

AddLines、AddRectangles 和 AddBeziers。

 同样,AddCurve 和 AddArc 方法也有几个将闭合的曲线或扇形添加到路径的伴随方法:

AddClosedCurve 和 AddPie。

若要绘制路径,需要 Graphics 对象、Pen 对象和 GraphicsPath 对象。

 Graphics 对象提供 DrawPath 方法,Pen 对象存储用于呈现路径的线条特性,如宽度和颜色。

 GraphicsPath 对象存储构成路径的直线和曲线序列。

Pen 对象和 GraphicsPath 对象作为参数传递给 DrawPath 方法。

 下面的示例绘制了由直线、椭圆和贝塞尔样条组成的路径:

C#

VB

myGraphicsPath.AddLine(0,0,30,20)

myGraphicsPath.AddEllipse(20,20,20,40)

myGraphicsPath.AddBezier(30,60,70,60,50,30,100,10)

myGraphics.DrawPath(myPen,myGraphicsPath)

 

下面的插图显示了该路径。

除了向路径添加直线、矩形和曲线外,还可以向路径添加路径。

 这就允许您合并现有的路径来形成大型复杂路径。

C#

VB

myGraphicsPath.AddPath(graphicsPath1,False)

myGraphicsPath.AddPath(graphicsPath2,False)

 

您还可以把其他两个项目加入路径:

字符串和扇形。

 扇形是椭圆内的一部分。

 下面的示例用弧形、基数样条、字符串和扇形创建了路径:

C#

VB

DimmyGraphicsPathAsNewGraphicsPath()

DimmyPointArrayAsPoint()={_

NewPoint(5,30),_

NewPoint(20,40),_

NewPoint(50,30)}

DimmyFontFamilyAsNewFontFamily("TimesNewRoman")

DimmyPointFAsNewPointF(50,20)

DimmyStringFormatAsNewStringFormat()

myGraphicsPath.AddArc(0,0,30,20,-90,180)

myGraphicsPath.StartFigure()

myGraphicsPath.AddCurve(myPointArray)

myGraphicsPath.AddString("astringinapath",myFontFamily,_

0,24,myPointF,myStringFormat)

myGraphicsPath.AddPie(230,10,40,40,40,110)

myGraphics.DrawPath(myPen,myGraphicsPath)

 

下面的插图显示了该路径。

 请注意,不必连接路径;弧形、基数样条、字符串和扇形都是分开的。

GDI+中的画笔和实心形状

.NETFramework4.5

其他版本

闭合的形状(例如,矩形或椭圆)由轮廓和内部组成。

 使用钢笔绘制出轮廓,并用画笔填充其内部。

 GDI+提供了几种填充闭合形状内部的画笔类:

SolidBrush、HatchBrush、TextureBrush、LinearGradientBrush 和PathGradientBrush。

 所有这些类都是从 Brush 类继承的。

 下面的插图显示了用实心画笔填充的矩形和用阴影画笔填充的椭圆。

实心画笔

若要填充闭合的形状,需要 Graphics 类的实例和 Brush。

 Graphics 类的实例提供方法,如 FillRectangle 和 FillEllipse,而 Brush 存储填充的特性,如颜色和模式。

 Brush 作为参数之一传递给填充方法。

 下面的代码示例演示如何用纯红色填充椭圆。

C#

VB

DimmySolidBrushAsNewSolidBrush(Color.Red)

myGraphics.FillEllipse(mySolidBrush,0,0,60,40)

 说明

在前面的示例中,画笔为 SolidBrush 类型,该类型从 Brush 继承。

阴影画笔

用阴影画笔填充图形时,要指定前景色、背景色和阴影样式。

 前景色是阴影的颜色。

C#

VB

DimmyHatchBrushAs_

NewHatchBrush(HatchStyle.Vertical,Color.Blue,Color.Green)

GDI+提供50多种阴影样式;在下面的插图中显示的三种样式为:

Horizontal、ForwardDiagonal 和 Cross。

纹理画笔

有了纹理画笔,您就可以用位图中存储的图案来填充图形。

 例如,假定下面的图片存储在名为 MyTexture.bmp 的磁盘文件中。

下面的代码示例演示了如何通过重复存储在 MyTexture.bmp 中的图片来填充椭圆。

C#

VB

DimmyImageAsImage=Image.FromFile("MyTexture.bmp")

DimmyTextureBrushAsNewTextureBrush(myImage)

myGraphics.FillEllipse(myTextureBrush,0,0,100,50)

下面的插图显示已填充的椭圆。

渐变画笔

GDI+提供两种渐变画笔:

线性和路径。

 您可以使用线性渐变画笔来用颜色(在您横向、纵向或斜向移过图形时会逐渐变化的颜色)填充图形。

 下面的代码示例演示如何用水平渐变画笔填充一个椭圆,当从椭圆的左边缘向右边缘移动时,画笔颜色会由蓝变为绿。

C#

VB

DimmyLinearGradientBrushAsNewLinearGradientBrush(_

myRectangle,_

Color.Blue,_

Color.Green,_

LinearGradientMode.Horizontal)

myGraphics.FillEllipse(myLinearGradientBrush,myRectangle)

下面的插图显示已填充的椭圆。

路径渐变画笔可配置为当您从图形中心向边缘移动时颜色随之改变。

路径渐变画笔非常灵活。

 用于填充下面插图中三角形的渐变画笔,颜色从中心由红色开始到顶点逐渐变为三种不同的颜色。

请参见

任务

如何:

在Windows窗体上绘制实心矩形

如何:

在Windows窗体上绘制实心椭圆

参考

System.Drawing.SolidBrush

System.Drawing.Drawing2D.HatchBrush

System.Drawing.TextureBrush

System.Drawing.Drawing

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2