GDI+的基本概念

GDI+的常用对象,包括Graphics、Font、Brush、Pen等对象的创建和使用

常用图形的绘制

Color结构、Point结构和Rectangle结构

1.GDI+的概念

GDI+是GDI(Graphics Device Interface,图形设备接口)的改进产品。

2.GDI+的绘图命名空间

用户所使有的GDI+函数都保存在System.Drawing.d11程序集中。其中包括System.Drawing、System.Drawing.Text、System.Drawing.Printing、System.Drawing.Imaging、System.Drawing.Drawing2D和System.Drawing.Design等命名空间。

Graphics对象

(1)利用窗体或控件的Paint事件的参数PaintEventArgs创建Graphics对象。

(2)使用窗体或控件的CreateGraphics方法

Graphics  g=this.CreateGraphics();

(3)使用Image的派生类创建Graphics对象。使用Image的任何派生类均可以生成相应的Graphics对象,这种方法一般适用于在C#中对图像进行处理的场合。

Bitmap b=new Bitmap("Mybmp.bmp");

Graphics g=Graphics.FromImage(b);

Pen对象

Pen类的构造函数有四种,使用方法如下。

(1)创建某一颜色的Pen对象:public Pen(Color)

(2)创建某一刷子样式的Pen对象:public Pen(Brush)

(3)创建某—刷子样式并具有相应宽度的Pen对象:public Pen(Brush,float)

(4)创建某一颜色和相应宽度的Pen对象:public Pen(Color,float)

Pen对象的常用属性

(1)Alignment属性:用来获取或设置此Pen对象的对齐方式。

(2)Color属性:用来获取或设置此Pen对象的颜色。

(3)Width属性:用来获取或设置此Pen对象的宽度。

(4)DashStyle属性:用来获取或设置通过此Pen对象绘制的虚线的样式。

(5)DashCap属性:用来指定虚线两端风格,是一个DashCap枚举型的值。

(6)StartCap属性:用来获取或设置通过此Pen对象绘制的直线起点的帽样式。

(7)EndCap属性:用来获取或设置通过此Pen对象绘制的直线终点的帽样式。

(8)PenType属性:用来获取用此Pen对象绘制的直线的样式。

Font对象

Brush对象

1.SolidBrush画刷

SolidBrush类用来定义单一颜色的Brush,其构造函数如下。

public SolidBrush(Color.Color)

2.HatchBrush画刷

HatchBrush类的构造函数有两种,分别如下:

[格式1]:public HatchBrush(HatchStyle, Color);

[格式2]:public HatchBrush(HatchStyle, Color, Color); HatchBrush画刷具有三个属性,分别如下:

(1)BackgroundColor属性:获取此HatchBrush 对象的背景色。

(2)ForegroundColor属性:获取此HatchBrush 对象的前景色。

(3)HatchStyle属性:获取此HatchBrush 对象的阴影样式。

3.LinearGradientBrush画刷

LinearGradientBrush类的构造函数有多种格式,最常用的格式如下。

public LinearGradientBrush(Point1, Point2, Color1, Color2);

常用图形的绘制方法

1.画直线

[格式1]:public void DrawLine(Pen pen,int x1,int y1,int x2,int y2);

[格式2]:public void DrawLine(Pen pen,Point pt1,Point pt2);

2.画椭圆

[格式1]:public void DrawEllipse( Pen pen, Rectangle rect);

[格式2]:public void DrawEllipse(Pen pen,int x,int y,int width, int height);

3.绘制圆弧

[格式1]:public void DrawArc(Pen pen,Rectangle rect,float startAngle,float sweepAngle);

[格式2]:public void DrawArc(Pen pen,int x,int y,int width,int height,int startAngle,int sweepAngle);

4.画扇形图

使用Graphics对象的DrawPie方法可以绘制扇形图,所谓扇形图其实就是把一段圆弧的两个端点与圆心相连。DrawPie方法的格式与DrawArc方法基本一致。

5.画矩形

[格式1]: public void DrawRectangle( Pen pen, Rectangle rect);

[格式2]:public void DrawRectangle(Pen pen,int x,int y,int width,int height);

6.画Bezier曲线

[格式1]:public void DrawBezier(Pen pen,Point pt1,Point pt2,Point pt3,Point pt4);

[格式2]:public void DrawBezier(Pen pen,float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4);

7.画多边形

[格式1]:public void DrawPolygon(Pen pen,  Point[] points);

[格式2]:public void DrawPolygon(Pen pen, PointF[] points);

8.绘制闭合曲线

[格式1]:public void DrawClosedCurve(Pen pen,Point[] points);

[格式2]:public void DrawClosedCurve(Pen pen,Point[] points,float tension,FillMode fillmode);

9.绘制非闭合曲线

[格式]:public void DrawCurve( Pen pen,Point[] points);

10.绘制路径

[格式]:public void DrawPath(Pen pen,GraphicsPath path);

11.填充椭圆

[格式1]:public void FillEllipse(Brush brush, Rectangle rect);

[格式2]:public void DrawEllipse(Brush brush,int x,int y,int width, int height);

12.填充矩形

[格式1]: public void FillRectangle( Brush brush, Rectangle rect);

[格式2]:public void FillRectangle(Brush brush,int x,int y,int width,int height);

13.填充饼图

[格式1]:public void FillPie(Brush brush,Rectangle rect,float startAngle,float sweepAngle)

[格式2]:public void FillPie(Brush brush,int x,int y,int width,int height,int startAngle,int sweepAngle);

GDI+与图形编程研究的更多相关文章

  1. 现代3D图形编程学习-关于本书(译)

    本书系列 现代3D图形编程学习 关于这本书 三维图像处理硬件很快成为了必不可少的组件.很多操作系统能够直接使用三维图像硬件,有些甚至要求需要有3D渲染能力的硬件.同时对于日益增加的手机系统,3D图像硬 ...

  2. 现代3D图形编程学习-关于本书

    关于这本书 三维图像处理硬件很快成为了必不可少的组件.很多操作系统能够直接使用三维图像硬件,有些甚至要求需要有3D渲染能力的硬件.同时对于日益增加的手机系统,3D图像硬件,也成为了它们的必备特征. 对 ...

  3. 学废了系列 - WebGIS vs WebGL图形编程

    目前工作中有不少涉及到地图的项目,我参加了几次技术评审,前端伙伴们在 WebGIS 方面的知识储备稍有不足,这次分享的主要目的是科普一些在前端领域比较常用的 WebGIS 知识.另外,我之前的工作中积 ...

  4. 现代3D图形编程学习-基础简介(3)-什么是opengl (译)

    本书系列 现代3D图形编程学习 OpenGL是什么 在我们编写openGL程序之前,我们首先需要知道什么是OpenGL. 将OpenGL作为一个API OpenGL 通常被认为是应用程序接口(API) ...

  5. 现代3D图形编程学习-基础简介(2) (译)

    本书系列 现代3D图形编程学习 基础简介(2) 图形和渲染 接下去的内容对渲染的过程进行粗略介绍.遇到的部分内容不是很明白也没有关系,在接下去的章节中,会被具体阐述. 你在电脑屏幕上看到的任何东西,包 ...

  6. 现代3D图形编程学习-基础简介(1) (译)

    本书系列 现代3D图形编程学习 基础简介 并不像本书的其他章节,这章内容没有相关的源代码或是项目.本章,我们将讨论向量,图形渲染理论,以及OpenGL. 向量 在阅读这本书的时候,你需要熟悉代数和几何 ...

  7. 现代3D图形编程学习-环境设置

    本书系列 现代3D图形编程学习 环境设置 由于本书中的例子,均是基于OpenGL实现的,因此你的工作环境需要能够运行OpenGL,为了读者能够更好的运行原文中的示例,此处简单地介绍了linux和win ...

  8. .net学习之多线程、线程死锁、线程通信 生产者消费者模式、委托的简单使用、GDI(图形设计接口)常用的方法

    1.多线程简单使用(1)进程是不执行代码的,执行代码的是线程,一个进程默认有一个线程(2)线程默认情况下都是前台线程,要所有的前台线程退出以后程序才会退出,进程里默认的线程我们叫做主线程或者叫做UI线 ...

  9. [ios]iOS 图形编程总结

    转自:http://www.cocoachina.com/ios/20141104/10124.html iOS实现图形编程可以使用三种API(UIKIT.Core Graphics.OpenGL E ...

随机推荐

  1. 给IT新男的15点建议:苦逼程序员的辛酸反省与总结

    很多人表面上看着老实巴交的,实际上内心比谁都好强.自负.虚荣.甚至阴险.工作中见的多了,也就习惯了. 有一些人,什么事都写在脸上,表面上经常得罪人,甚至让人讨厌.但是他们所表现的又未必不是真性情. 我 ...

  2. 浅谈javascript的变量作用域

    1.变量遵循先声明再使用. console.log(b); b=123; 代码运行结果: Uncaught ReferenceError: b is not defined 2.方法内定义的局部变量外 ...

  3. SQL遍历字符串的方法

    字符串穿越: 1.创建一个只存递增序列(1…n)的表——Temp,并将它与目标字符串所在的表Src进行笛卡尔运算.(Temp表的记录数要不小于遍历的目标字符串的长度) 2.过滤掉序列值大于串长的行. ...

  4. C#相关图书推荐

    C#入门经典(第6版) 作      者 [美] Karli Watson,Jacob Vibe Hammer,Jon D Reid 等 著: 出 版 社 清华大学出版社 出版时间 2014-01-0 ...

  5. XNA Game Studio 4.0 Programming 随便读,随便记 “Game Class”

    XNA 中的 Game 类,是所有神奇事情发生的地方.几乎游戏中所有的事情都由它来操办. 它是项目中的王者,让我们深入窥探一番: 虚方法 Game 本身从众多其它地方继续了许多能力才能完成游戏中的事情 ...

  6. Apache Spark GraphX的简介

    简单地说,GraphX是大规模图计算框架. GraphX 是 Spark 中的一个重要子项目,它利用 Spark 作为计算引擎,实现了大规模图计算的功能,并提供了类似 Pregel 的编程接口. Gr ...

  7. JavaScript如何判断参数为浮点型

    在codewars里,确实可以学到很多很酷的方法,例如这一次的题目是判断数字是否为浮点型.我一开始是想有没有原生的js方法,像isNaN(),isFinite(),在前者Infinity是不属于NaN ...

  8. HTML 5的革新:结构之美

    HTML 5是什么,无须我在这里赘述了.对于HTML 5的革新,按我的理解,可以总结为语义明确的标签体系.化繁为简的富媒体支持.神奇的本地数据存储技术.不需要插件的富动画(canvas).强大的API ...

  9. Web Service学习之二:Web Service(for JAVA)的几种框架

    在讲Web Service开发服务时,需要介绍一个目前开发Web Service的几个框架,分别为Axis,axis2,Xfire,CXF以及JWS(也就是前面所述的JAX-WS,这是Java6发布所 ...

  10. 06 java中常量以及常量池

    1.举例说明 变量 常量 字面量 int a=10; float b=1.234f; String c="abc"; final long d=10L; a,b,c为变量,d为常量 ...