Win32中GDI+应用(一)
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+应用(一)的更多相关文章
- Win32中GDI+应用(四)--- 位图的打开与显示
显示位图,你应该使用GDI+里面的Bitmap类或者Image类,这两个类都提供了方法从硬盘上的一个文件打开文件,创建相应的内存中的位图对象的工作.然后你可以使用Graphics类的DrawImage ...
- Win32中GDI+应用(三)---Graphics类
在我理解看来,Graphics是一个device context和你的drawing conetent之间的一个中介.它存储了device context的相关属性,以及drawing content ...
- Win32中GDI+应用(五)--GDI与GDI+编程模型的区别
在GDI里面,你要想开始自己的绘图工作,必须先获取一个device context handle,然后把这个handle作为绘图复方法的一个参数,才能完成任务.同时,device context ha ...
- Win32中GDI+应用(二)--初始化与清理
GDI+提供了GdiplusStartup和 GdiplusShutdown 函数来进行初始化和完成清理工作.你必须在调用其他的GDI+函数之前,调用GdiplusStartup函数,在完成GDI+工 ...
- Win32中安全的子类化(翻译)
关于子类化的话题虽然有些旧,但它至今仍然不失为一种开发Windows的强有力技术,在MFC的内核.甚至.NET的内核中都离不开它,希望本连载能对Windows开发的爱好者有所帮助. 原文标题:Safe ...
- [转]用多线程方法实现在MFC/WIN32中调用OpenGL函数并创建OpenGL窗口
原文链接: 1.用多线程方法实现在MFC/WIN32中调用OpenGL函数并创建OpenGL窗口 2.Windows MFC 两个OpenGL窗口显示与线程RC问题
- WTL中GDI+支持资源文件加载
WTL中GDI+支持资源文件加载 分类: WTL WTL gdi+ gdi+2013-04-22 17:16 78人阅读 评论(0) 收藏 举报 WTLGDI+c++ 今天遇到一个小问题困扰了.就是G ...
- VC++中GDI和GDI+ 的坐标系统介绍
在Windows应用程序中,只要进行绘图,就要使用GDI坐标系统.Windows提供了几种映射方式,每一种映射都对应着一种坐标系.例如,绘制图形时,必须给出图形各个点在客户区的位置,其位置用x 和y两 ...
- Win32中 DLL、Lib 库的创建机器使用
Windows 下 的静态库和动态库 一.静态函数库(Lib) 1. 静态函数库的制作(C/C++) —— 打开新建项目,然后选中Win32项目,接着在创建项目中选择 Lib,再接着将函数.实现功能的 ...
随机推荐
- RedHat/CentOS系统信息查看命令大全
系统# uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo ...
- 软件缺陷分析方法:ODC
资料 Orthogonal Defect Classification:简要描述. ODC-5-2.pdf :详细说明了ODC对于缺陷属性分类的描述,以及具体应该怎么划分. ODC-5-2-Exten ...
- 深入理解 Spring 事务原理
本文由码农网 – 吴极心原创,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 一.事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供 ...
- 个人推荐,比较好的MySQL客户端工具
关于啊,MySQL客户端,实在是太多了.本人也是正在摸索中. MySQL Workbench phpMyAdmin SQLyog Navicat for MySQL MySQL Server MySQ ...
- Spark-Java版本WordCount示例
首先创建Spark的Maven工程,我这里使用的是Eclipse. 1.编写WordCountApp代码 package com.mengyao.spark.java.core; import jav ...
- C++——cout输出小数点后指定位数
转载自 http://blog.csdn.net/edricbjtu/article/details/41082597
- engine的工具中实现Snapping(捕捉)
在Engine的工具(ITool)里: OnClick事件处理函数中: 首先需要获取一个图层,作为Snapping的参照, IFeatureLayer targetLayer 然后声明一个IMoveP ...
- MySQL自定义查询字段排序
同事在做抽奖排名的时候有个问题 需要按照 一等奖 二等奖 三等奖 未中奖 的形式输出数据 问到我如何排序. 数据库设计如下 用一个prize_code字段标示了是否中奖 1是一等奖 2是二等奖 3是三 ...
- Android——C语言、JNI与低层调用
JNI java native interface c的基本数据类型 int:32位,能表示的数字是2的32次方个 最高位用来表示符号位,那么还剩下31位可以表示数值,所以能表示的数字就是2的31次方 ...
- jetty服务器
1,http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin 2,http://wiki.eclipse.org/Jetty#Getting_S ...