GDI+概述
GDI+是GDI(即Windows早期版本中附带的Graphics Device Interface)的后继者。它是一种构成Windows XP操作系统的子系统的应用程序编程接口(API)。 GDI+基类的主要命名空间及说明: System.Drawing--包含与基本绘图功能相关的大多数类、结构、枚举和委托。System.Drawing.Drawing2D--为大多数高级2D和矢量绘图操作提供了支持,包括消除锯齿、几何转换和图形路径。System.Drawing.Imaging--帮助处理图像(位图和GIF文件等)的各种类。System.Drawing.Printing--把打印机或打印预览窗口作为输出设备时使用的类。System.Drawing.Design--一些预定义的对话框、属性表和其他用户界面元素,与在设计期间扩展用户界面相关。System.Drawing.Text--对字体和字体系列执行更高级操作的类。
基本图形绘制
Graphics类是GDI+的核心,Graphics对象表示GDI+绘图表面,提供了对象绘制到显示设备的方法。Graphics类封装了绘制直线、曲线、图形、图像和文本的方法,是GDI+实现绘制直线、曲线、图形、图像和文本的类,是进行一切GDI+操作的基础类。
绘制直线
Graphics类中的DrawLine方法,可重载,主要用来绘制一条连接由坐标对指定的两个点的线条。 (1)绘制一条连接两个Point结构的线。
public void DrawLine(Pen pen, Point pt1,Point pt2)
pen:Pen对象,确定线条颜色、宽度和样式。pt1:Point结构,表示要连接的第一个点。pt2:Point结构,表示要连接的第二个点。 (2)绘制一条连接由坐标对指定的两个点的线条。
Public void DrawLine(Pen pen,int x1,int y1,int x2,int y2)
绘制直线的示例代码:
private void button1_Click(object sender, EventArgs e) { Graphics graphics = this.CreateGraphics(); Pen myPen = new Pen(Color.Blue, 2); graphics.DrawLine(myPen, 50, 30, 170, 30); }
绘制矩形
Graphics类的DrawRectangle方法,可重载。 (1)绘制由Rectangle结构指定的矩形。
public void DrawRectangle(Pen pen,Rectangle rect)
pen:Pen对象,确定线条颜色、宽度和样式。rect:表示要绘制矩形的Rectangle结构。 例如:
Rectangle rect = new Rectangle(0, 0, 80, 50);
(2)绘制由坐标对、宽度和高度指定的矩形。
public void DrawRectangle(Pen pen, int x, int y, int width, int height)
pen:Pen对象,确定线条颜色、宽度和样式。x:要绘制矩形的左上角x坐标。y:要绘制矩形的左上角y坐标。width和height分别表示宽度和高度。 绘制矩形的示例代码:
private void button1_Click(object sender, EventArgs e) { Graphics graphics = this.CreateGraphics(); Pen myPen = new Pen(Color.Blue, 2); graphics.DrawRectangle(myPen, 70, 20, 80, 50); }
绘制椭圆
Graphics类中的DrawEllipse方法,可重载。主要用来绘制边界由Rectangle结构指定的椭圆。 (1)绘制边界由Rectangle结构指定的椭圆。
public void DrawEllipse(Pen pen, Rectangle rect)
(2)绘制一个由边框(该边框由一对坐标、高度和宽度指定)定义的椭圆。
public void DrawEllipse(Pen pen, int x, int y, int width, int height)
绘制椭圆的示例代码:
private void button1_Click(object sender, EventArgs e) { Graphics graphics = this.CreateGraphics(); Pen myPen = new Pen(Color.Blue, 3); Rectangle myRectangle = new Rectangle(70, 20, 100, 60); graphics.DrawEllipse(myPen, myRectangle); }
绘制圆弧
Graphics类中的DrawArc方法,可重载。 (1)绘制一段弧线,它表示由Rectangle结构指定的椭圆的一部分。
public void DrawArc(Pen pen, Rectangle rect, float startAngle, float sweepAngle)
pen:Pen对象,确定线条颜色、宽度和样式。rect:Rectangle结构,定义椭圆边界。startAngle:从x轴到弧线的起始点沿顺时针方向度量的角(以度为单位)。sweepAngle:从startAngle参数到弧线的结束点沿顺时针方向度量的角(以度为单位)。 (2)绘制一段弧线,它表示由一对坐标、宽度和高度指定的椭圆部分。
public void DrawArc(Pen pen, int x, int y, int width, int height, int startAngle, int sweepAngle)
绘制圆弧的实例代码:
private void button1_Click(object sender, EventArgs e) { Graphics graphics = this.CreateGraphics(); Pen myPen = new Pen(Color.Blue, 5); Rectangle myRectangle = new Rectangle(70, 20, 100, 60); graphics.DrawArc(myPen, myRectangle,210,120); }
绘制多边形
需要Graphics对象、Pen对象和Point(或PointF)对象数组。Graphics类提供DrawPolygon方法,Pen对象存储用于呈现多边形的线条属性,如宽度和颜色等,Point(或PointF)对象数组存储多边形的各个顶点。可重载。 (1)绘制由一组Point结构定义的多边形。
public void DrawPolygon(Pen pen, Point[] pints)
(2)绘制由一组PointF结构定义的多边形。
public void DrawPolygon(Pen pen, PointF[] pints)
绘制多边形示例代码:
private void button1_Click(object sender, EventArgs e) { Graphics graphics = this.CreateGraphics(); Pen myPen = new Pen(Color.Red, 5); Point point1 = new Point(80, 20); Point point2 = new Point(40, 50); Point point3 = new Point(80, 80); Point point4 = new Point(160, 80); Point point5 = new Point(200, 50); Point point6 = new Point(160, 20); Point[] myPoints = { point1, point2, point3, point4, point5, point6 }; graphics.DrawPolygon(myPen, myPoints); }
绘制基数样条
基数样条是一连串单独的曲线,连接起来组成较大的曲线。由点的数组和张力参数指定,样条平滑地经过数组的每个点,曲线的陡度上没有尖角和突然的变化。 (1)绘制经过一组指定Point结构的基数样条。
public void DrawCurve(Pen pen, Point[] points)
(2)使用指定的张力,绘制经过一组指定Point结构的基数样条。
public void DrawCurve(Pen pen, Point[] points, float tension)
tension:大于或等于0.0F的值,指定曲线的张力。 (3)从相对于数组开始位置的偏移量开始,绘制经过一组指定PointF结构的基数样条。
public void DrawCurve(Pen pen, Point[] points, int offset, int numberOfSegments)
offset:从points参数数组中的第一个元素到曲线中起始点的偏移量。numberOfSegments:起始点之后要包含在曲线中的段数。 (4)使用指定张力,绘制经过一组指定Point结构的基数样条。
public void DrawCurve(Pen pen, Point[] points, int offset, int numberOfSegments, float tension)
绘制基数样条示例代码:
private void button1_Click(object sender, EventArgs e) { Graphics graphics = this.CreateGraphics(); Pen myPen = new Pen(Color.Red, 5); Point point1 = new Point(50, 20); Point point2 = new Point(60, 30); Point point3 = new Point(70, 25); Point point4 = new Point(100, 50); Point point5 = new Point(130, 30); Point point6 = new Point(150, 45); Point[] myPoints = { point1, point2, point3, point4, point5, point6 }; graphics.DrawCurve(myPen, myPoints, 1.0F); }
绘制贝赛尔样条
贝塞尔样条是由4个点指定的曲线:两个端点(p1,p2)和两个控制点(c1,c2)。曲线开始于p1,结束于p2。曲线不经过控制点,但是控制点像磁铁一样,在某些方向上拉伸曲线并影响曲线弯曲的方式。 调用Graphics类的DrawBezier方法,可重载。 (1)绘制由4个Point结构定义的贝塞尔样条。
public void DrawBezier(Pen pen, Point pt1, Point pt2, Point pt3, Point pt4)
4个Point点分别表示起始点、第一个控制点、第二个控制点和结束点。
(2)绘制由4个表示点的有序坐标对定义的贝塞尔样条。
public void DrawBezier(Pen pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4)
x2,y2及x3,y3分别表示第1个、第2个控制点相应坐标。顺序和第一种方法类似。
绘制贝塞尔样条示例代码:
private void button1_Click(object sender, EventArgs e) { Graphics graphics = this.CreateGraphics(); Pen myPen = new Pen(Color.Red, 5); float startX = 50.0F; float startY = 80.0F; float controlX1 = 150.0F; float controlY1 = 20.0F; float controlX2 = 230.0F; float controlY2 = 50.0F; float endX = 190.0F; float endY = 80.0F; graphics.DrawBezier(myPen, startX, startY, controlX1, controlY1, controlX2, controlY2, endX, endY); }
绘制图形路径
路径是通过组合直线、矩形和简单的曲线而形成的。在GDI+中,GraphicsPath对象允许将基本构造块收集到一个单元中,调用一次Graphics类的DrawPath方法,就可以绘制出整个单元的直线、矩形、多边形和曲线。
public void DrawPath(Pen pen, GraphicsPath path)
pen:Pen对象,确定线条颜色、宽度和样式。path:要绘制的GraphicsPath图形路径。 PS:注意要引用System.Drawing.Drawing2D命名空间。
绘制图形路径示例代码:
private void button1_Click(object sender, EventArgs e) { Graphics graphics = this.CreateGraphics(); GraphicsPath myGraphicsPath = new GraphicsPath(); Pen myPen = new Pen(Color.Blue, 1); Point[] myPoints = { new Point(15, 30), new Point(30, 40), new Point(50, 30) }; myGraphicsPath.AddArc(15, 20, 80, 50, 210, 120); myGraphicsPath.StartFigure(); myGraphicsPath.AddCurve(myPoints); myGraphicsPath.AddString("图形路径", new FontFamily("华文行楷"), (int)FontStyle.Underline, 50, new PointF(20, 50), new StringFormat()); myGraphicsPath.AddPie(180,20,80,50,210,120); graphics.DrawPath(myPen, myGraphicsPath); }
更多C# GDI+技术相关文章请关注PHP中文网!

C#.NET生态系统提供了丰富的框架和库,帮助开发者高效构建应用。1.ASP.NETCore用于构建高性能Web应用,2.EntityFrameworkCore用于数据库操作。通过理解这些工具的使用和最佳实践,开发者可以提高应用的质量和性能。

如何将C#.NET应用部署到Azure或AWS?答案是使用AzureAppService和AWSElasticBeanstalk。1.在Azure上,使用AzureAppService和AzurePipelines自动化部署。2.在AWS上,使用AmazonElasticBeanstalk和AWSLambda实现部署和无服务器计算。

C#和.NET的结合为开发者提供了强大的编程环境。1)C#支持多态性和异步编程,2).NET提供跨平台能力和并发处理机制,这使得它们在桌面、Web和移动应用开发中广泛应用。

.NETFramework是一个软件框架,C#是一种编程语言。1..NETFramework提供库和服务,支持桌面、Web和移动应用开发。2.C#设计用于.NETFramework,支持现代编程功能。3..NETFramework通过CLR管理代码执行,C#代码编译成IL后由CLR运行。4.使用.NETFramework可快速开发应用,C#提供如LINQ的高级功能。5.常见错误包括类型转换和异步编程死锁,调试需用VisualStudio工具。

C#是一种由微软开发的现代、面向对象的编程语言,.NET是微软提供的开发框架。C#结合了C 的性能和Java的简洁性,适用于构建各种应用程序。.NET框架支持多种语言,提供垃圾回收机制,简化内存管理。

C#和.NET运行时紧密合作,赋予开发者高效、强大且跨平台的开发能力。1)C#是一种类型安全且面向对象的编程语言,旨在与.NET框架无缝集成。2).NET运行时管理C#代码的执行,提供垃圾回收、类型安全等服务,确保高效和跨平台运行。

要开始C#.NET开发,你需要:1.了解C#的基础知识和.NET框架的核心概念;2.掌握变量、数据类型、控制结构、函数和类的基本概念;3.学习C#的高级特性,如LINQ和异步编程;4.熟悉常见错误的调试技巧和性能优化方法。通过这些步骤,你可以逐步深入C#.NET的世界,并编写高效的应用程序。

C#和.NET的关系是密不可分的,但它们不是一回事。C#是一门编程语言,而.NET是一个开发平台。C#用于编写代码,编译成.NET的中间语言(IL),由.NET运行时(CLR)执行。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript开发工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),