7.1.1 GDI+概述
   GDI+是微软在Windows 2000以后操作系统中提供的新的图形设备接口,其通过一套部署为托管代码的类来展现,
这套类被称为GDI+的“托管类接口”,GDI+主要提供了以下三类服务:
    (1) 二维矢量图形:GDI+提供了存储图形基元自身信息的类(或结构体)、存储图形基元绘制方式信息的类以及实际进行绘制的类。
    (2) 图像处理:大多数图片都难以划定为直线和曲线的集合,无法使用二维矢量图形方式进行处理。
因此,GDI+为我们提供了Bitmap、Image等类,它们可用于显示、操作和保存BMP、JPG、GIF等图像格式。
    (3) 文字显示:GDI+支持使用各种字体、字号和样式来显示文本。
   
我们要进行图形编程,就必须先讲解Graphics类,同时我们还必须掌握Pen、Brush和Rectangle这几种类。

常用类和结构:
Graphics 画图形
Pen 用来用patterns、colors或者bitmaps进行填充。
Color 颜色
Font 用来给文字设置字体格式。
Brush 用来描述颜色。
Rectangle 矩形结构通常用来在窗体上画矩形。
Point 描述一对有序的x,y两个坐标值。

命名空间:
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

Graphics类(画图形)
3种方法来创建一个Graphics对象
1.第一种用控件或窗体的Paint事件中的PainEventArgs

//窗体的Paint事件的响应方法
private void form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
}

//也可以直接重载控件或窗体的OnPaint方法,具体代码如下所示:
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
}

2.调用某控件或窗体的CreateGraphics方法
   调用某控件或窗体的CreateGraphics方法以获取对Graphics对象的引用,该对象表示该控件或窗体的绘图图面。
如果想在已存在的窗体或控件上绘图,通常会使用此方法。
  
例如:
Graphics g = this.CreateGraphics();

3.调用Graphics类的FromImage静态方法
   由从Image继承的任何对象创建Graphics对象。在需要更改已存在的图像时,通常会使用此方法。
   
例如:  
Image img = Image.FromFile("g1.jpg"); //建立Image对象
Graphics g = Graphics.FromImage(img); //创建Graphics对象

Graphics对象的方法
DrawArc 画弧。
DrawBezier 画立体的贝尔塞曲线。
DrawBeziers 画连续立体的贝尔塞曲线。
DrawClosedCurve 画闭合曲线。
DrawCurve 画曲线。
DrawEllipse 画椭圆。
DrawImage 画图像。
DrawLine 画线。
DrawPath 通过路径画线和曲线。
DrawPie 画饼形。
DrawPolygon 画多边形。
DrawRectangle 画矩形。
DrawString 绘制文字。
FillEllipse 填充椭圆。
FillPath 填充路径。
FillPie 填充饼图。
FillPolygon 填充多边形。
FillRectangle 填充矩形。
FillRectangles 填充矩形组。
FillRegion 填充区域。

Color结构
常用属性
A 获取alpha透明分量值,取值(0~255)。
B 获取蓝色分量值,取值(0~255)。
G 获取绿色分量值,取值(0~255)。
R 获取红色分量值,取值(0~255)。

创建Color结构:
   Color clr1 = Color.FromArgb(122,25,255);
   Color clr2 = Color.FromKnowColor(KnowColor.Brown);//KnownColor为枚举类型
Color clr3 = Color.FromName("SlateBlue");

GDI+学习笔记的更多相关文章

  1. C# GDI+学习笔记1

    —前言 本文是学习C# GDI+系列的第一篇文章,简单的介绍了GDI+的一些基本绘图内容,比较粗糙.但本文主要是让大家简单的回顾一下GDI+的基本概念.本篇文章的参考代码请在此下载 . GDIPTes ...

  2. GDI+学习笔记(六)渐变画笔

    刷,顾名思义,它是一样的刷.提请设备,还记得常唱歌曲,"我是一个画家.." 好吧.跑题了. 本系列博客希望尽可能简单的描写叙述每项功能,而不希望把每一个參数都介绍的详具体细,假设须 ...

  3. GDI+学习笔记(九)带插件的排序算法演示器(MFC中的GDI+实例)

    带插件的排序算法演示器 请尊重本人的工作成果,转载请留言.并说明转载地址,谢谢. 地址例如以下: http://blog.csdn.net/fukainankai/article/details/27 ...

  4. 学习笔记:利用GDI+生成简单的验证码图片

    学习笔记:利用GDI+生成简单的验证码图片 /// <summary> /// 单击图片时切换图片 /// </summary> /// <param name=&quo ...

  5. KTHREAD 线程调度 SDT TEB SEH shellcode中DLL模块机制动态获取 《寒江独钓》内核学习笔记(5)

    目录 . 相关阅读材料 . <加密与解密3> . [经典文章翻译]A_Crash_Course_on_the_Depths_of_Win32_Structured_Exception_Ha ...

  6. EPROCESS 进程/线程优先级 句柄表 GDT LDT 页表 《寒江独钓》内核学习笔记(2)

    在学习笔记(1)中,我们学习了IRP的数据结构的相关知识,接下来我们继续来学习内核中很重要的另一批数据结构: EPROCESS/KPROCESS/PEB.把它们放到一起是因为这三个数据结构及其外延和w ...

  7. .NET GC机制学习笔记

    学习笔记内容来自网络资料摘录http://www.cnblogs.com/springyangwc/archive/2011/06/13/2080149.html 1.GC介绍 Garbage Col ...

  8. C++内存管理学习笔记(6)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  9. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

随机推荐

  1. 我的第一段ionic代码

    ionic是基于angularjs的前端框架,用于实现移动app. 下面是第一段代码,先贴代码,有时间再整理: demo1.htm <!DOCTYPE html> <html ng- ...

  2. 恢复阿里云RDS云数据库MySQL的备份文件到自建数据库

    云数据库MySQL版使用开源软件Percona Xtrabackup对数据库进行备份,所以您可以使用该软件将云数据库MySQL的备份文件恢复到自建数据库中,本文将介绍详细的操作步骤. 关于云数据库My ...

  3. 执行 maven 命令 报错Unable to add module to the current project as it is not of packaging type 'pom'[转]

    今天学习在本地搭建Maven工程时,执行了mvn archetype:generate 命令,报错. Unable to create project from archetype [org.apac ...

  4. JAVA中的字节流与字符流

    字节流与字符流的区别? 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用 ...

  5. ImageButton动态改变按钮图片

      在drawable 目录下增加一个myselector.xml文件,appwidget_play.png,appwidget_played.png myselector.xml文件中内容如下 &l ...

  6. Mybatis自动生成的配置实例

    一.目录 按照图片准备下面的东西吧,基础jar,数据链接库的jar. 二.generatorConfig.xml <?xml version="1.0" encoding=& ...

  7. SQL Prompt几个快捷键

    推荐一个小插件,SQL Prompt,配合Microsoft SQL Server Management Studio,使用起来非常方便,同时再加上以下几个快捷键: (1)ctrl+5或F5,运行代码 ...

  8. spring in action小结4.1

    1 横切关注点:可以被描述为影响应用多处的功能.横切关注点可以被模块化为特殊的类,这些类被称为切面. 2 AOP自己的术语,通知(Advice).切点(pointcut).连接点(joinpoint) ...

  9. 蜜果私塾:informix数据库学习合集[不断补充]

    一.infomix使用备忘录     目录结构:     1. 启动与停止命令:      2. 修改数据库编码:      3. 查看informix占用的端口:      4. 使用dbacces ...

  10. spring session配置

    spring session是一个解决集群环境中,session持久化管理的依赖库.配置非常简单. 在spring boot环境中添加依赖 <dependency> <groupId ...