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+应用(一),布布扣,bubuko.com

时间: 2024-11-03 21:51:49

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

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

在GDI里面,你要想开始自己的绘图工作,必须先获取一个device context handle,然后把这个handle作为绘图复方法的一个参数,才能完成任务.同时,device context handle是同一定的绘图属性绑定在一起的,诸如画笔.话刷等等,你必须在画线之前创建自己的画笔,然后使用selectObject方法把这个画笔同已经获取的device context handle绑定,才能使用LineTo等方法开始画线.不然,你画出来的线使用的是默认的属性:宽度(1),颜色(黑色).但

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

在我理解看来,Graphics是一个device context和你的drawing conetent之间的一个中介.它存储了device context的相关属性,以及drawing content的属性.这样,它就能用自己的方法把drawing content“映射”到device content 之上.GDI中的绘图工作是直接在device context之上进行的.在GDI—+中,你因该在device context之上再建立一个graphics,然后调用graphics的相关方法完成绘

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

显示位图,你应该使用GDI+里面的Bitmap类或者Image类,这两个类都提供了方法从硬盘上的一个文件打开文件,创建相应的内存中的位图对象的工作.然后你可以使用Graphics类的DrawImage方法来绘制该位图.下面的代码初始化GDI+,显示一个打开文件对话框并且创建Bitmap对象,显示位图: GdiplusStartupInput input; ULONG_PTR gdiPlusToken; if(GdiplusStartup(&gdiPlusToken,&input,NULL)

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

GDI+提供了GdiplusStartup和 GdiplusShutdown 函数来进行初始化和完成清理工作.你必须在调用其他的GDI+函数之前,调用GdiplusStartup函数,在完成GDI+工作后调用GdiplusShutdown .具体的可以看下面的MSDN上的例子: #include <windows.h> #include <gdiplus.h> #include <stdio.h> using namespace Gdiplus; int main()

win32用GDI+加载png图片作为背景图

#include <windows.h> #include <gdiplus.h> /* GDI+ startup token */ ULONG_PTR gdiplusStartupToken; /* Declare Windows procedure */ LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); // UpdateLayeredWindow Defination typedef BOOL(*UP

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

关于子类化的话题虽然有些旧,但它至今仍然不失为一种开发Windows的强有力技术,在MFC的内核.甚至.NET的内核中都离不开它,希望本连载能对Windows开发的爱好者有所帮助. 原文标题:Safe Subclassing in Win32作者:Kyle MarshMSDN技术组 点击此处查看原文 摘要 本文描述了Win32环境下的子类化,描述了它是如何工作的以及实现安全的子类化必须要遵循的规则.本文涵盖了实例子类化和全局子类化.而超类化则作为一个全局子类化的可选替代方案被介绍.从Win16到

VS下,在win32中实现trace功能

由于在win32中直接调用TRACE函数比较麻烦,需要引用MFC的头文件,容易错误,这里使用OutputDebugString函数的基础上封装,实现TRACE函数功能,具体函数如下: 注意由于,VS默认字符集是UNIcode,这种字符集下char不等于TCHAR,调试会不成功,此时要在项目属性->常规中,将字符集改为使用多字节字符集,则char等同于TCHAR: 此时程序仍然会报错,因为没有包含_vsntprintf函数的头文件,这里包含<tchar.h>以及<stdio.h>

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

原文链接: 1.用多线程方法实现在MFC/WIN32中调用OpenGL函数并创建OpenGL窗口 2.Windows MFC 两个OpenGL窗口显示与线程RC问题 原文地址:https://www.cnblogs.com/rainbow70626/p/8973440.html

Cocos2d-x Win32中使用Visual Leak Detector (for VC++)检查内存泄漏

Visual Leak Detector(vld,下载地址http://vld.codeplex.com/,当前版本v2.2.3)是VC++环境下一款小巧易用.免费开源的内存泄漏检测工具,相较于VC提供 的CRT Debug Library,vld可以显示导致内存泄漏的完整内存分配调用堆栈.vld具有以下一些特性: 对每个leaked block提供完整的堆栈跟踪,并且包含其源文件及行号信息(符号信息完整时) 能检测出进程内绝大多数类型的leaks,包括COM-based leaks和纯Win3