C# GDI+编程之Graphics类
GDI+是GDI的后继者,它是.NET Framework为操作图形提供的应用程序编程接口,主要用在窗体上绘制各种图形图像,可以用于绘制各种数据图像、数学仿真等。
Graphics类是GDI+的核心,它提供将对象绘制到显式设备的方法。Graphics类封装了绘制直线、曲线、圆形、图像和文本的方法,是一切GDI+操作的基础类。在绘图之前,必须在指定的窗体上创建一个Graphics对象,才能调用Graphics类的方法画图。
一、创建Graphics类对象的的三种方法
1.1 Paint事件
在窗体或控件的Paint事件中创建,将其作为PaintEventArgs的一部分。在为控件创建绘制代码时,通常会使用此方法。
例如,在Paint事件中创建Graphics对象:
private void Form1_Paint(object sender, PaintEventArgs e) //窗体的Paint事件
{
Graphics g = e.Graphics; //创建Graphics对象
}
1.2 CreateGraphics方法
调用窗体或控件的CreateGraphics方法可以获取对Graphics对象的引用,该对象表示控件或窗体的绘图画面。如果在已存在的窗体或控件身上绘图,应该使用此方法
例如,在窗体的Load事件中,通过CreateGraphics方法创建Graphics对象
private void Form1_Load(object sender, EventArgs e) //窗体的Load事件
{
Graphics g; //声明一个Graphics对象
g = this.CreateGraphics();
}
1.3 Graphics.FromImage方法
由从Image继承的任何对象创建Graphics对象,调用Graphics.FromImage方法即可,该方法在需要更改已存在的图像时十分有用,例:
private void Form1_Load(object sender, EventArgs e)
{
Bitmap mbit = new Bitmap(@"C:\test.bmp");
Graphics g = Graphics.FromImage(mbit);
}
二、Graphics类的属性
| Clip |
获取或设置 Region,它限定此 Graphics 的绘图区域。 |
| ClipBounds |
获取一个 RectangleF 结构,该结构限定此 Graphics 的剪辑区域。 |
| CompositingMode |
获取一个值,该值指定如何将合成图像绘制到此 Graphics。 |
| CompositingQuality |
获取或设置绘制到此 Graphics 的合成图像的呈现质量。 |
| DpiX |
获取此 Graphics 的水平分辨率。 |
| DpiY |
获取此 Graphics 的垂直分辨率。 |
| InterpolationMode |
获取或设置与此 Graphics 关联的插补模式。 |
| IsClipEmpty |
获取一个值,该值指示此 Graphics 的剪辑区域是否为空。 |
| IsVisibleClipEmpty |
获取一个值,该值指示此 Graphics 的可见剪辑区域是否为空。 |
| PageScale |
获取或设置此 Graphics 的世界单位和页单位之间的比例。 |
| PageUnit |
获取或设置用于此 Graphics 中的页坐标的度量单位。 |
| PixelOffsetMode |
获取或设置一个值,该值指定在呈现此 Graphics 的过程中像素如何偏移。 |
| RenderingOrigin |
为抵色处理和阴影画笔获取或设置此 Graphics 的呈现原点。 |
| SmoothingMode |
获取或设置此 Graphics 的呈现质量。 |
| TextContrast |
获取或设置呈现文本的灰度校正值。 |
| TextRenderingHint |
获取或设置与此 Graphics 关联的文本的呈现模式。 |
| Transform |
获取或设置此 Graphics 的几何世界转换的副本。 |
| VisibleClipBounds |
获取此 Graphics 的可见剪辑区域的边框。 |
注:详情参考MSDN对Graphics属性的说明
三、Graphics类的常用方法及说明
| 方法 | 描述 |
| Clear | 清除整个绘图面并以指定背景色填充 |
| Dispose | 释放由此Graphics对象使用的所有资源 |
| DrawArc | 绘制一段弧线,它表示由一对坐标、宽高指定的椭圆部分 |
| DrawBezier | 绘制由四个Point结构定义的贝塞尔样条 |
| DrawBeziers | 从Point结构的数组绘制一系列贝塞尔样条 |
| DrawCurve | 绘制经过一组指定的Point结构的基数样条 |
| DrawEllipse | 绘制一个由一对坐标、宽度和高度指定的椭圆 |
| DrawIcon | 在指定坐标处绘制由指定的Icon对象表示的图像 |
| DrawImage | 在指定的位置并且按原始大小绘制指定的Image对象 |
| DrawLine | 绘制一条连接由坐标对象指定的两个点的线条 |
| DrawLines | 绘制一列连接一组Point结构的线段 |
| DrawPath | 绘制GraphicsPath对象 |
| DrawPie | 绘制一个扇形,该扇形由一个坐标对象,宽度和高度,以及两条射线所指定的椭圆指定 |
| DrawPolygon | 绘制由一组Point结构定义的多边形 |
| DrawRectangle | 绘制由坐标对。宽度和高度指定的矩形 |
| DrawRectangles | 绘制一系列由Rectangle结构指定的矩形 |
| DrawString | 在指定位置并且用指定的Brush和Font对象绘制指定的文本字符串 |
| FillEllipse | 填充边框所定义的椭圆内部,该边框由一对坐标、一个高度和一个宽度指定 |
| FillPath | 填充GraphicsPath对象的内部 |
| FillPie | 填充扇形内部 |
| FillPolygon | 填充多边形内部 |
| FillRectangle | 填充由一对坐标、一个宽度和一个高度指定的矩形内部 |
| FillRectangles | 填充由Rectangle结构指定的一些列矩阵的内部 |
| FillRegion | 填充Region对象的内部 |
| FromImage | 从指定的Image对象创建行的Graphics对象 |
| Save | 保存此Graphics对象的当前状态,并且GraphicsState对象标识保存的状态 |
注:完整的Graphics方法请查看MSDN对Graphics方法的说明
由于时间有限,后续还会对GDI+ 相关内容进行更新
C# GDI+编程之Graphics类的更多相关文章
- [深入浅出WP8.1(Runtime)]网络编程之HttpClient类
12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...
- 网络编程之HttpClient类(转)
12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...
- GUI异步编程之BackgroundWorker类
GUI编程中,经常需要另建一个线程,在后台运行以完成某项工作,并不时地与界面主线程进行通信,以改变界面显示.BackgroundWorker类为此而生. BackgroundWorker类的主要成员: ...
- Java并发编程之ThreadLocal类
ThreadLocal类可以理解为ThreadLocalVariable(线程局部变量),提供了get与set等访问接口或方法,这些方法为每个使用该变量的线程都存有一份独立的副本,因此get总是返回当 ...
- C++图形编程之graphics.h头文件
graphics.h是Turbo C的针对DOS下的一个C语言图形库,如果要用的话应该用TC的编译器来编译,但是如果需要在vc及vs环境中使用graphics.h的功能,则可以选择下载EasyX图形库 ...
- 并发编程之 Thread 类过期方法和常用方法
前言 在 Java 刚诞生时,Thread 类就已经有了很多方法,但这些方法由于一些原因(有一些明显的bug或者设计不合理)有些已经废弃了,但是他们的方法名却是非常的好,真的是浪费.我们在进行并发必编 ...
- winform网络编程之TcpClient类,TcpListener类和UdpClient类
TcpClient类和TcpListener类 (1)TcpClient的用途: 用于在同步阻止模式下通过网络来链接.发送和接受流数据,在此情况下,必须有侦听此连接的请求,而侦听的任务就交给TcpLi ...
- IO编程之File类
File类是java.io包下代表与平台无关的文件及目录,程序操作文件和目录都可以通过File类来完成.值得指出的是,不管是文件还是目录都可以通过File类来操作.File能新建.删除.重命名文件和目 ...
- Qt编程之QImage类小结
最近用Qt做图像处理,以下references是需要用到的 references: http://blog.csdn.net/lyc_daniel/article/details/9193881 ht ...
随机推荐
- Monotonic Array LT896
An array is monotonic if it is either monotone increasing or monotone decreasing. An array A is mono ...
- 5阶m序列
void echo32(int m) { printf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d\n ...
- UVA 10534 Wavio Sequence
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=17&p ...
- mui几种页面跳转方式对比
1.初始化时创建子页面 mui.init({ subpages: [{ url: your - subpage - url, //子页面HTML地址,支持本地地址和网络地址 id: your - su ...
- OpenCV2.4.10 + VS2010开发环境配置
原文转载自:qinyang8513 一.开发环境 1.操作系统:Windows 7(64位) 2.编程环境:Microsoft Visual Studio 2010 3.OpenCV版本:2.4.10 ...
- USART of STM32
/*************************************************************************** * 文件名:USART.h * * 编写人:离 ...
- [Python] networkx入门 转
networkx是python的一个第三方包,可以方便地调用各种图算法的计算. 通过调用python画图包matplotlib能实现图的可视化. 1.安装 正好整理一下python第三方包的安装方法. ...
- Centos 执行top命令详细解读
1.作用:top命令用来显示执行中的程序进程,使用权限是所有用户. 2.格式:top [-] [d delay] [q] [c] [S] [s] [i] [n] 3.主要参数: d:指定更新的间隔,以 ...
- Media Queries 媒体查询常见设备断点
按需调整断点 一.谷歌后摘抄的一部分媒体查询 /*#region SmartPhones */ /* SmartPhones */@media only screen and (min-device- ...
- Android ------------------ 带边框的圆角矩形
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http:/ ...