vs2008中使用gdi+的设置

vs2008中使用gdi+

1.新建一个mfc工程

2.在stdafx.h文件中加入以下几行语句:

#include
<gdiplus.h>               
//
#pragma comment(lib, "gdiplus.lib") //在工程属性中添加亦可
using namespace
Gdiplus;           
//使用GDI+的命名空间, 若不用的话每次使用Gdiplus时均加上命名空间亦可

3.修改App类

在App类(以下例子中为CTestApp)中增加成员
protected: 
   
GdiplusStartupInput m_gdiplusStartupInput; 
    ULONG_PTR
m_gdiplusToken; 

在BOOL CTestApp::InitInstance()增加以下代码,
必须在dlg.DoModal()前.
GdiplusStartup(&m_gdiplusToken,
&m_gdiplusStartupInput,
NULL); 

重载CTestApp::ExitInstance()
public: 
virtual BOOL
ExitInstance(); 

BOOL
CTestApp::ExitInstance() 

   
GdiplusShutdown(m_gdiplusToken); 
    return
CWinAppEx::ExitInstance();   
//使用基类的ExitInstance(). 


4.
现在可以在CTestDlg::OnPaint()中增加以下代码来画图了

CClientDC
dc(this);  
Graphics graphics(dc); 
Image
image(L"d:/test.jpg"); 
Point pos[]


    Point(10,
10), 
    Point(image.GetWidth() + 10,
10), 
    Point(10, image.GetHeight() +
10) 
}; 
graphics.DrawImage(&image, pos, 3);
//在平行四边形区域内显示图像

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

*****************************************************************************************

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

在VS2008当中由于自带了GDI+的开发包,所以不需要在安装GDI开发包,这些头文件的位置由VS中的$(WindowsSdkDir)/include自动包含进来了。你可以在vs的命令提示符下使用
echo %WindowsSdkDir%显示该路径。我的电脑上是在C:/Program Files/Microsoft
SDKs/Windows/v6.0A/Include。默认vs并没有将gdi的静态库链接文件加进来,所以需要显示链接,编译器指令为#pragma
comment(lib, "gdiplus.lib")

下面为使用GDI+的基本代码,功能是将bmp图像转换成jpeg格式的图像。

[cpp:showcolumns] view
plain
copy

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150

  1. // FileTran.cpp :
    定义控制台应用程序的入口点。

  2. //
  3. #include
    "stdafx.h"

  4. #pragma comment(lib,
    "gdiplus.lib")

  5. using namespace Gdiplus;

  6. GdiplusStartupInput g_Gdiplus;

  7. ULONG_PTR g_pGdiToken;
  8. int GetCodecClsid(const WCHAR* format, CLSID*
    pClsid);

  9. int _tmain(int argc, _TCHAR*
    argv[])

  10. {

  11. GdiplusStartup(&g_pGdiToken,
    &g_Gdiplus, NULL);

  12. Bitmap* pBmp = Bitmap::FromFile(_T("你的bmp图像路径"));

  13. if (pBmp)

  14. {

  15. CLSID
    clsid;

  16. int nQuality
    = 95;

  17. EncoderParameters Encoders;

  18. Encoders.Count =
    1;

  19. Encoders.Parameter[0].Guid = EncoderQuality;

  20. Encoders.Parameter[0].Type = EncoderParameterValueTypeLong;

  21. Encoders.Parameter[0].NumberOfValues = 1;

  22. Encoders.Parameter[0].Value = &nQuality;

  23. GetCodecClsid(L"image/jpeg",
    &clsid);

  24. pBmp->Save(L"tran.jpg", &clsid,
    &Encoders);
  25. }

  26. GdiplusShutdown(g_pGdiToken);

  27. return 0;

  28. }
  29. int GetCodecClsid(const WCHAR* format, CLSID*
    pClsid)

  30. {

  31. UINT  codenum =
    0;

  32. UINT 
    size = 0;

  33. ImageCodecInfo* pImageCodecInfo =
    NULL;

  34. GetImageEncodersSize(&codenum,
    &size);

  35. if(size == 0)

  36. return -1
    ;

  37. pImageCodecInfo = new ImageCodecInfo[size];

  38. if(pImageCodecInfo ==
    NULL)

  39. return -1;

  40. GetImageEncoders(codenum, size,
    pImageCodecInfo);

  41. for(UINT j = 0; j < codenum;
    ++j)

  42. {

  43. if(
    wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )

  44. {

  45. *pClsid
    = pImageCodecInfo[j].Clsid;

  46. delete []pImageCodecInfo;

  47. return 0;

  48. }
  49. }

  50. delete []pImageCodecInfo;

  51. return -1;

  52. }

vs2008中使用gdi+的设置,码迷,mamicode.com

时间: 2024-12-24 20:59:42

vs2008中使用gdi+的设置的相关文章

在vs2008中添加lib文件以及一些常用项目设置选项

下面以添加ws2_32.lib文件为例 方法一(直接添加代码): 直接在.cpp文件中,添加#pragma comment(lib, "ws2_32.lib");即可.(ws2_32.lib即为你要添加的lib文件) 方法二(在vs工具栏中添加): 1.项目(project) -> TcpSrv属性(TcpSrv properties) (其中TcpSrv为工程名) 2.打开TcpSrv属性页后,配置属性 -> 链接器(linker) -> 输入(Input) ,在附

C#中基于GDI+(Graphics)图像处理系列之前言

前言 图像处理工具类的全部源码 完整示例程序源码下载 示例程序截图 前言 图像处理是开发工程师们学习某种语言入门时就会遇到的问题,笔者刚开始接触C#使用GDI+进行图像处理,觉得太简单了,就没有深入研究,随着工作经验的积累,踏遍若干坑以后突然觉得还是有必要将这块的知识好好总结一下,毕竟还是有一些比较冷门的知识在实际应用中给我们的程序带来更多的灵活性,比如将图片保存成jpeg时进一步控制图片的质量.怎样获取任意角度旋转后的图像.怎样获取透明图像等等. 本文后面将直接放出图像处理工具类的全部源码和示

在VS2008中配置WDK7600驱动开发环境

网上这类资料多如牛毛,也许很多人都是转来转去,却很有人去真正的测试,有时候感觉确实对他人也是一种误导. 这里是我自己在VS2008 + WDK7600.16385.0 + DDKWizard配置自己的IDE开发环境的设置过程: 1.首先安装DDKWizard 官方网页:http://ddkwizard.assarbad.net/ 从官方网页下载这三个重要的文件:DDKBUILD.BAT . DDKBUILD.CMD .DDKWIZARD_SETUP.EXE 在WDK7600安装目录新建一个bat

MFC中的GDI绘图&lt;转&gt;

一.关于GDI的基本概念 什么是GDI? Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上. 在Windows操作系统中,动态链接库C:\WINDOWS\system32\gdi32.dll(GDI Client DLL)中定义了GDI函数,实现与设备无关的包括屏幕上输出像素.在打印机上输出硬拷贝以及绘制Windows用户界面功能.在Visual C++6.0中的头文件C:\Program Files

GDI+学习笔记(九)带插件的排序算法演示器(MFC中的GDI+实例)

带插件的排序算法演示器 本节将通过一个实例来说明GDI+在MFC中的应用.这个算法演示器其实是本人算法系列的一个开端,由于csdn没有树状的目录结构,咱也只好使用链表了不是?好了,废话不多说,开始今天的文章. (一)功能说明 我们初步制定功能如下: (1). 能够通过柱状图,自动展示排序算法的交换比较过程 (2). 能够使用插件的形式进行开发.即,当新完成一个算法后,只需要完成一个插件文件(我们这里使用动态库dll),由主程序加载插件,即可进行执行,而不再需要重新编译主程序. (3). 保证主程

MFC中的GDI绘图(1)

一.关于GDI的基本概念 什么是GDI         Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上. 在Windows操作系统中,动态链接库C:\WINDOWS\system32\gdi32.dll(GDI Client DLL)中定义了GDI函数,实现与设备无关的包括屏幕上输出像素.在打印机上输出硬拷贝以及绘制Windows用户界面功能.在Visual C++6.0中的头文件C:\Progra

VS2008中开发智能设备程序的一些总结

原文链接:http://blog.csdn.net/citybug_nj/article/details/2598705 程序中包括四个部分: 系统配置 这个部分用来配置系统中的相关参数,参数包括数据库信息和串口的配置信息.这部分的主要技术是XML文件的读取和写入. 数据下载 从数据库中下载数据到PDA,PDA上的保存也是使用数据库.这部分的技术主要是PDA设备上的移动数据库开发和使及用PDA连接PC数据库 数据上传 把PDA上的数据上传到PC数据库中,使用的技术和2相同. GPS数据获取 通过

VS2008中代码段(Snippet)及代码段编辑

网上资源零碎,主要是整理下. 整理的是主要核心内容,完整内容可以看后面标注的原文链接. 代码段是什么 <VS2008中代码段(Snippet)的功能> 在VS2008中,提供了代码段(Snippet)的功能.  什么是代码段呢?即使你对这个词还不是很熟悉,但是极有可能的是——你已经在不知不觉中应用它了.举例:   当我们在写一个选择分支(if语句)或是循环分支(for语句)时,难道要完全手动敲完每一个字符吗?当然不会这么笨,我们只要输入“if”然后再轻按两下Tab键,if语句的经典结构就跃然纸

关于wamp5中(apache)设置虚拟主机

找了很多文章,但是很多对于最新的apache都已经过时无法生效了. http://blog.csdn.net/yuluo727282752/article/details/6944359 这篇文章写得非常好,记录下来,下面为全文引用. 完成一个项目,总要进行一些测试,但是在自己本上测试或许有一些自己想不到的BUG出现,于是配置一个虚拟主机可以为自己更方便的解决BUG,也可以方便演示时大家测试 以下是我在网上寻到的一些方法,分享给大家 开发环境:WAMP 实例一,Apaceh配置localhost