数字图像处理 GDI+环境的初始化

注:如果包含<gdiplus.h> 后出现编译错误,那么看看stdafx.h中有没有定义WIN32_LEAN_AND_MEAN,有的话注释掉就OK

【1】添加文件头与库

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

【2】添加有效成员(保证使用gdi+的地方都有效)

ULONG_PTR m_gdiplusToken;

【3】初始化gdi+资源(使用gdi+之前)

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

【4】销毁gdi+资源(使用gdi+之后)

Gdiplus::GdiplusShutdown(m_gdiplusToken);  

【5】测试示例(初始化与销毁工作已经放到应用程序的初始化与退出中)

Gdiplus::Graphics   graphics(hDC);
Gdiplus::SolidBrush solidBrush(Gdiplus::Color::Red);
Gdiplus::FontFamily fontFamily(L"宋体");
Gdiplus::Font	    font(&fontFamily, 16, FontStyleRegular, UnitPoint);

graphics.DrawString(L"GDI+程序示意", -1, &font, Gdiplus::PointF(0, 0), &solidBrush);
graphics.ReleaseHDC(hDC);

【6】为了方便使用,将初始化代码和销毁代码放到一个类中,使用时只需要定义这个类的一个global实例就可以了 (如果使用gdi+的地方比较多,建议将初始化放到主应用程序的初始化中,提高效率,而不是api中

class GdiPlusIniter{
public:
      GdiPlusIniter(){
          Gdiplus::GdiplusStartupInput StartupInput;
          GdiplusStartup(&m_gdiplusToken,&StartupInput,NULL);
      }

      ~GdiPlusIniter(){
          Gdiplus::GdiplusShutdown(m_gdiplusToken);
    }
private:
     ULONG_PTR m_gdiplusToken;
 };

在DLL中使用GDI+库,只需要包含GdiPlus.h和GdiPlus.lib,初始化GDI+环境的工作只需要在主调用程序做,否则在DLL初始化代码中初始化GDI+环境容易发生DLL重入的错误,而且频繁的切换效率低。

参考文章:

http://www.cnblogs.com/hdtianfu/archive/2013/05/10/3071479.html

数字图像处理 GDI+环境的初始化

时间: 2024-11-05 17:04:43

数字图像处理 GDI+环境的初始化的相关文章

初始----python数字图像处理--:环境安装与配置

一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此,我们这里使用python这个脚本语言来进行数字图像处理. 要使用python,必须先安装python,一般是2.7版本以上,不管是在windows系统,还是linux系统,安装都是非常简单的. 要使用python进行各种开发和科学计算,还需要安装对应的包.这和matlab非常相似,只是matla

【数字图像处理】六.MFC空间几何变换之图像平移、镜像、旋转、缩放详解

本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图片空间几何变换,包括图像平移.图形旋转.图像反转倒置镜像和图像缩放的知识.同时文章比较详细基础,没有采用GDI+获取矩阵,而是通过读取BMP图片信息头和矩阵像素实现变换,希望该篇文章对你有所帮助,尤其是初学者和学习图像处理的学生. [数字图像处理]一.MFC详解显示BMP格式图片 [数字图像处理]二.MFC单文档分割窗口显示图片 [数字图像处

【数字图像处理】四.MFC对话框绘制灰度直方图

本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行回忆讲解,主要通过MFC单文档视图实现点击弹出对话框绘制BMP图片的灰度直方图,再获取平均灰度.中指灰度和标准差等值.文章比较详细基础,希望该篇文章对你有所帮助~ [数字图像处理]一.MFC详解显示BMP格式图片 [数字图像处理]二.MFC单文档分割窗口显示图片 [数字图像处理]三.MFC实现图像灰度.采样和量化功能详解 免费资源下载地址: http://download.csdn.ne

【数字图像处理】三.MFC实现图像灰度、采样和量化功能详解

本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP格式图片,并通过Bitmap进行灰度处理.图片采样和量化功能. 个人认为对初学者VC++6.0可能还是很值得学习的工具,所以采用它来讲解,而不是VS或C#.同时文章比较详细基础,希望该篇文章对你有所帮助~ [数字图像处理]一.MFC详解显示BMP格式图片 [数字图像处理]二.MFC单文档分割窗口显示图片 免费资源下载地址: http://dow

数字图像处理 简单介绍

 数字图像处理发展概况 数字图像处理发展概况数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程.数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们開始利用计算机来处理图形和图像信息.数字图像处理作为一门学科大约形成于20世纪60年代初期.早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的.图像处理中,输入的是质量低的图像,输出的是改善质量后的图像

数字图像处理 CImage类的使用与封装(jpg png gif tif bmp等格式图像的加载、数据读写、保存等功能)

引入CImage类的原因 原有的CBitmap 类只能处理BMP格式的图片,非常受限.而CImage可以处理JPGE.GIF.BMP.PNG等多种格式图片,扩展了图片处理功能且能与CBitmap 进行转换( 因为所载入的位图句柄都是HBITMAP,所以可相互转换),因此引入CImage类进行图像处理. CImage类简介 CImage是MFC和ATL共享的新类,它能从外部磁盘中调入一个JPEG.GIF.BMP和PNG格式的图像文件加以显示,而且这些文件格式可以相互转换. CImage提供增强型的

【数字图像处理】七.MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化详解

本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图像增强处理,包括图像普通平滑.高斯平滑.不同算子的图像锐化知识.希望该篇文章对你有所帮助,尤其是初学者和学习图像处理的学生. [数字图像处理]一.MFC详解显示BMP格式图片 [数字图像处理]二.MFC单文档分割窗口显示图片 [数字图像处理]三.MFC实现图像灰度.采样和量化功能详解 [数字图像处理]四.MFC对话框绘制灰度直方图 [数字图像

数字图像处理(一)1

1-1.什么是图像?数字图像?数字信号与模拟信号?数字图像处理指什么? 1-2.数字图像处理研究内容有哪些? 2-1.SDK是什么?与API的关系?SDK包括什么? 2-2.MFC是什么?C++/CLI是什么? 3-1.VC++通过什么实现对数字图像处理最基本支持?Windows显示图像的基础?Bitmap?DIB?DDB? 3-2.GDI是什么?主要负责什么?GDI++是什么?与GDI的两个区别? 4-1.结构体默认权限? 4-2.实例:用VC++实现画图程序

哈工大深研院数字图像处理第二次大作业:水果自动识别(2)HSV空间聚类及SIFT算法目标识别

老规矩,直接贴报告~ Programe list: Programe was developed in the condition of Windows aswell as Linux server, programming language is Matlab (www.mathworks.com). Classify.m, Kmeans.m: function for K-means clustering. main_Kmeans.m: main function for K-means c