在要使用的工程中,增加如下代码
 #include  < comdef.h >     // 初始化一下com口

// 在GDI+中,需要定义一个ULONG_PTR。
 #ifndef ULONG_PTR  
 #define  ULONG_PTR unsigned long*
 #endif

// 通过typedef定义的。与上面的宏定义的作用效果是一样的。这两个,任意一种方法都可以。其他的能达到同样效果的方法也一样。
 #if  defined(_WIN64)
typedef unsigned __int64 ULONG_PTR;
 #else
typedef unsigned  long  ULONG_PTR;
 #endif

#include  " GdiPlus.h "            // 包含DGI+的头文件。

// 使用Gdiplus名字空间,可选,不用的话,相关的地方加上[ Gdiplus :: ] 也一样。
 using   namespace  Gdiplus;  
上面的代码添加在需要的地方即可,一般可以写在StdAfx.h中。

1.     加载lib。
#pragma comment( lib, "gdiplus.lib" )
上面的代码,或者在项目的设置里增加引入的lib文件,都可以。
 
2.     初始化GDI+环境
GdiplusStartup( &m_pGdiToken , &m_gdiplusStartupInput , NULL );
下面的两个变量,是初始化GDI+环境必须的,只要作用范围与GDI+的环境作用范围一致就可以了。在卸载GDI+环境的时候,还要用到。
GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_pGdiToken;
 
3.     卸载GDI+环境
GdiplusShutdown(m_pGdiToken);
在确定不使用GDI+的时候,写上上面一句代码即可。

假设是用的MFC架构:

1. 添加头文件和依赖库:

stdafx.h中添加:

#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")

2. CWinApp中添加初始化:

APP类中添加成员变量:ULONG_PTR m_gdiplusToken;

在APP类的InitInstance()开头添加:(必须在开头部分)

Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);

APP类中重写ExitInstance(),并添加:
Gdiplus::GdiplusShutdown(m_gdiplusToken);

【GDI+与GDI】 -- 都是硬件加速的

1. GDI+是GDI的下一个版本,它进行了很好的改进,并且易用性更好。

GDI的一个好处就是你不必知道任何关于数据怎样在设备上渲染的细节,GDI+更好的实现了这个优点,

也就是说,GDI是一个中低层API,你还可能要知道设备,而GDI+是一个高层的API,你不必知道设备。

2. GDI是有状态的,而GDI+是无状态的。

3. GDI绘图要使用设备环境(DC)和句柄(Handle);而GDI+全部交由Graphics类管理。

4. GDI绘图时可以使用SelectObject频繁切换图形对象,而GDI+的图形对象是独立的。

5. GDI中存在一个“当前位置”(全局区),目的是提高绘图性能;而GDI+取消了它,以避免绘图时不确定这个“当前位置”而带来非预期的错误。

6. GDI总是将画笔和画刷绑定在一起,即使不需要填充一个区域也必须指定一个画刷;而GDI+则可以使用不同的函数分开使用画笔和画刷。

【GDI+新特性】

1. 改进了颜色管理。GDI+不仅提供了更多可供选择使用的颜色,使其支持Alpha通道合成运算,而且还保持了与其他颜色的兼容性。

2. 绘图支持反锯齿。通过设置GDI+对象的相关属性,GDI+可以与相关的显示驱动程序搭配完成图形绘制时的反锯齿功能,使得绘制的图形更加平滑,美观,而整个过程是由GDI+对象自动计算完成的。

3. 提供渐变画刷。GDI+拓展了GDI的功能,提供线性渐变和路径渐变画刷来填充图形、路径和区域,甚至也可用来绘制直线、曲线等。

4. 独立的路径对象。GDI+使用Graphics对象来进行绘图操作,并将路径操作从Graphics对象分离出来,提供一个Graphics类供用户使用,用户不必担心对象会受到Graphics对象操作的影响,从而可以使用同一个操作对象进行多次的路径绘制操作。

5. 样条曲线。GDI+封装了绘制基数样条曲线和贝塞尔样条曲线的方法。

6. 变形和矩阵运算。GDI+提供了功能强大的Matrix类来实现矩阵的旋转,错切、平移、比例等变换操作,以便产生复杂的新图形。

7. 多图片格式的支持。GDI+该进了图形处理能力,通过GDI+,用户能够访问多种格式的图片文件,转换文件格式等,还能进行图像重新着色、色彩修正、消除走样等图像处理。

在GdiplusBase类可以通过快捷键shift + alt + g找到其相关的类。

c++ 使用gdiplus相关推荐

  1. 一个GDIPlus的Bug -- OutofMemory异常

    今天发现 framework2.0中的一个GDIPlus的Bug: 在Form的OnPaint事件里面写如下代码: private void Form1_Paint(object sender, Pa ...

  2. GdiPlus[6]: 五种画刷总览

    为什么80%的码农都做不了架构师?>>>    GDI+ 有五种画刷: 实心画刷: IGPSolidBrush 阴影画刷: IGPHatchBrush 纹理画刷: IGPTextur ...

  3. GdiPlus[44]: IGPGraphics (三) 关于文本绘制续 - IGPStringFormat

    IGPStringFormat 的方法和属性: //方法: IGPStringFormat.GetTabStops(); { 获取制表位 } IGPStringFormat.SetTabStops() ...

  4. GdiPlus[12]: IGPLinearGradientBrush 的其他构建方式

    为什么80%的码农都做不了架构师?>>>    第二种构建方式: TGPLinearGradientBrush.Create(矩形, 颜色1, 颜色2, 渐变模式); 第三种构建方式 ...

  5. GdiPlus[59]: 图像(十一) IGPImageAttributes 之颜色矩阵(TGPColorMatrix)变换

    IGPMatrix 矩阵 是个接口, 要通过 TGPMatrix 实例化后使用, 其内置了很多方法和属性. TGPColorMatrix 只是一个结构体, 除了矩阵数据(5*5)外, 它只有一个方法: ...

  6. 看看我最关心的动态库中到底有多少函数 - gdiplus.dll

    获取方法: 运行: tdump.exe C:\windows\system32\gdiplus.dll c:\temp\gdiplus.txt GdipAddPathArc GdipAddPathAr ...

  7. GdiPlus[57]: 图像(九) IGPBitmap 特有的属性与方法

    这包括: //属性 IGPBitmap.Pixels; { 获取或设置指定像素的颜色 }//方法 IGPBitmap.SetResolution(); { 设置分辨率 } IGPBitmap.GetH ...

  8. Gdiplus中实现双Buffer绘图

    在编写win32 GUI相关的程序的时候,最直接的方法是使用GDI API进行绘制操作.一般为了图形绘制过程中为避免绘制过程闪动,而多采用双Buffer的做法,具体是先在一个内存DC中线将图像绘制好, ...

  9. GdiPlus[21]: IGPPathGradientBrush 之 InterpolationColors

    测试效果图: 测试代码: uses GdiPlus, GdiPlusHelpers;procedure TForm1.FormPaint(Sender: TObject); constC1 = $FF ...

  10. GdiPlus[28]: IGPPen: 建立复合画笔

    设置画笔的 CompoundArray 属性可得到复合画笔. 它对应的类型是 IGPCompoundArray (IGPCompoundArray = IGPArray<Single>). ...

最新文章

  1. python安装cv2模块_pythonimportcv2importError:DLLloadfailed:找不到指定模块
  2. 在Linux下安装配置phpMyAdmin步骤
  3. [ATF]-ATF启动--BL31跳转到optee和uboot
  4. 在SMARTFORMS中取消使用WORD作为编辑器
  5. 合工大python期末复习知识点汇总
  6. ubuntu系统下安装php环境
  7. InsightFace及其mxnet、tensorflow代码实现
  8. 爱情三十一课,先信自己
  9. unity 是厘米还是米_1种“竹节参”,植株有40厘米高,能挂果,果子成熟后变红,珍贵...
  10. pthread_create()函数
  11. 搜索题,留着以后慢慢刷
  12. PHP、JS、Python,数据库 获取今天是星期几了?[开发篇]
  13. 非极大值抑制(Non-Maximum Suppression)
  14. 研究生做java如何发论文_研究生三年, 我是如何在CSSCI期刊上发表5篇论文,挣得2万元国家奖学金的?...
  15. wekan 工具配置
  16. [cesium] | 3d特效渲染
  17. matplotlib数据可视化实验报告1(最终版)
  18. win10之定时关机
  19. 阳志平:思维的抽象层级-逻辑链条的起点
  20. 基于python3.7的4环电阻读数工具

热门文章

  1. MyCat 主键ID自增长配置
  2. 图像处理之全景拼接---基于sift的全景图像拼接
  3. DDD~microsoft NLayerApp项目中的层次结构图
  4. linux定时器编程实验报告,Linux定时器实验.doc
  5. SQL server 远程连接 1326错误
  6. 5.abp框架code first方式删除表
  7. java cell设置绝对位置_java操作excel在开始位置添加一列
  8. Win10如何卸载自己安装的软件
  9. PHP中的simplehtmldom学习
  10. linux gnu主要精神,最符合GNU精神的Linux发行版gnewsense