GDI+, Microsoft Graphics Device Interface Plus, 是微软在继GDI(Microsoft Graphics Device Interface)后推出的图形编程接口,它捅GDI一样隐藏了下层显示设备、打印设备的具体细节,提供给用户一个统一的图形接口,支持基本的位图处理、显示,矢量元素(贝塞尔曲线等)绘制,基本的打印处理。它比GDI提供了更多的功能,诸如渐变填充,基本的位图格式编解码等。
本文尝试介绍我在学习GDI+中的一些体会,顺便做一些提纲型的笔记。

GDI+的新功能:
(一)渐变画刷
GDI+提供的渐变画刷可以填充出如下的效果:

上图是一种成为线性渐变画笔填充出来的效果。GDI还提供一种路径渐变画刷,你可以配置各种选项来设置让颜色随着你的路径(如贝塞尔曲线)来变化,它可以填充出下面的效果:

(二)样条曲线
GDI+可以绘制出样条曲线:

样条曲线将一系列的曲线连接起来,可以画出比较圆滑的拐角。
(三)独立的路径对象
在GDI里面,路径隶属于一定的设备上下文,路径绘制完成,路径对象也就被destroy掉了。但是在GDI+里面,你可以从一个Grahpics上生成若干个GraphicsPath对象,GraphicsPath对象独立于Graphics,并且不会在绘制完成后销毁。
(四)支持变换和矩阵
GDI+可以通过矩阵对象来支持常见的变化。原理可以再一般的图形学入门书籍里面见到。

(五)可变化的区域

GDI+扩展了GDI里面区域(Region)的功能,使得区域可以支持变换。

(六)透明度(Alpha)绘制
在GDI+里面,你可以设置绘制颜色的透明度,达到下面的绘制效果:

(七)支持多种图像格式

GDI+支持下面的图像格式:

  • BMP
  • Graphics Interchange Format (GIF)
  • JPEG
  • Exif
  • PNG
  • TIFF
  • ICON
  • WMF
  • EMF

转载地址:ttp://www.cppblog.com/dingding/archive/2008/06/27/54790.aspx

Win32中GDI+应用(一)的更多相关文章

  1. Win32中GDI+应用(四)--- 位图的打开与显示

    显示位图,你应该使用GDI+里面的Bitmap类或者Image类,这两个类都提供了方法从硬盘上的一个文件打开文件,创建相应的内存中的位图对象的工作.然后你可以使用Graphics类的DrawImage ...

  2. Win32中GDI+应用(三)---Graphics类

    在我理解看来,Graphics是一个device context和你的drawing conetent之间的一个中介.它存储了device context的相关属性,以及drawing content ...

  3. Win32中GDI+应用(五)--GDI与GDI+编程模型的区别

    在GDI里面,你要想开始自己的绘图工作,必须先获取一个device context handle,然后把这个handle作为绘图复方法的一个参数,才能完成任务.同时,device context ha ...

  4. Win32中GDI+应用(二)--初始化与清理

    GDI+提供了GdiplusStartup和 GdiplusShutdown 函数来进行初始化和完成清理工作.你必须在调用其他的GDI+函数之前,调用GdiplusStartup函数,在完成GDI+工 ...

  5. Win32中安全的子类化(翻译)

    关于子类化的话题虽然有些旧,但它至今仍然不失为一种开发Windows的强有力技术,在MFC的内核.甚至.NET的内核中都离不开它,希望本连载能对Windows开发的爱好者有所帮助. 原文标题:Safe ...

  6. [转]用多线程方法实现在MFC/WIN32中调用OpenGL函数并创建OpenGL窗口

    原文链接: 1.用多线程方法实现在MFC/WIN32中调用OpenGL函数并创建OpenGL窗口 2.Windows MFC 两个OpenGL窗口显示与线程RC问题

  7. WTL中GDI+支持资源文件加载

    WTL中GDI+支持资源文件加载 分类: WTL WTL gdi+ gdi+2013-04-22 17:16 78人阅读 评论(0) 收藏 举报 WTLGDI+c++ 今天遇到一个小问题困扰了.就是G ...

  8. VC++中GDI和GDI+ 的坐标系统介绍

    在Windows应用程序中,只要进行绘图,就要使用GDI坐标系统.Windows提供了几种映射方式,每一种映射都对应着一种坐标系.例如,绘制图形时,必须给出图形各个点在客户区的位置,其位置用x 和y两 ...

  9. Win32中 DLL、Lib 库的创建机器使用

    Windows 下 的静态库和动态库 一.静态函数库(Lib) 1. 静态函数库的制作(C/C++) —— 打开新建项目,然后选中Win32项目,接着在创建项目中选择 Lib,再接着将函数.实现功能的 ...

随机推荐

  1. 项目杂记(MONTHS_BETWEEN,Having ,Spool)

    1,oracle中计算年龄: select FLOOR(MONTHS_BETWEEN(SYSDATE, to_date('20130728', 'yyyymmdd')) / 12), trunc(mo ...

  2. UVA 11624 Fire! (bfs)

    算法指南白书 分别求一次人和火到达各个点的最短时间 #include<cstdio> #include<cstring> #include<queue> #incl ...

  3. Java中重载和重写的区别

    重载 overloading 1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型.重载是一个类中多态性的一种表现. 2) Java的方法重载,就 ...

  4. arm汇编--ubuntu12.04 安装arm-linux交叉编译环境

    1. 安装标准的C开发环境,由于Ubuntu安装默认是不安装的,所以需要先安装一下:sudo apt-get install gcc g++ libgcc1 libg++ make gdb 2.从ft ...

  5. 5个数求最值—南阳acm

    问题描述  设计一个从5个整数中取最小数和最大数的程序   输入       输入只有一组测试数据,为五个不大于1万的正整数 输出      输出两个数,第一个为这五个数中的最小值,第二个为这五个数中 ...

  6. Hadoop: the definitive guide 第三版 拾遗 第十二章 之Hive初步

    Hive简介 Hive是建立在 Hadoop 上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在 Hadoop 中的大规模数据的机制 ...

  7. JSP_DAO方式实现数据库查询(MyEclipse10,Tomcat7.0,JDK1.7,)——Java Web练习(四)

    1.项目结构: 2.创建数据库.表.插入记录 create database TestDao; use TestDao; create table student( stuid int, userna ...

  8. 397. Integer Replacement

    先正统做法. public class Solution { public int integerReplacement(int n) { if(n == 1) return 0; int res = ...

  9. MySQLdb安装和使用2

    http://blog.chinaunix.net/uid-8487640-id-3183185.html MySQLdb是Python连接MySQL的模块,下面介绍一下源码方式安装MySQLdb: ...

  10. python学习笔记--Django入门一 网页显示时间

    我的笔记是学习http://djangobook.py3k.cn/ 课程时做的,这个上边的文章讲的确实是非常的详细,非常感谢你们提供的知识. 上一篇随笔中已经配置好了Django环境,现在继续跟随ht ...