zoukankan      html  css  js  c++  java
  • GDI+学习笔记之GDI+环境初始化

    作者:朱金灿
    来源:http://blog.csdn.net/clever101/


          尽管以前接触过一下GDI+,但决心从现在开始系统学习GDI+,所用的教材为《精通GDI编程》。在VS 2010以下版本的VS 编译器使用GDI+都需要对GDI+环境进行初始化操作(VS 2010中的MFC 10依赖GDI+,故不用初始化)。

    VS 2003、VS 2005和VS 2008的GDI+环境初始化操作步骤一样。


          在应用程序类添加一个保护权限的数据成员:


    在应用程序类的实现文件包含gdi+的头文件:



    在工程附加库加上:GdiPlus.lib


    然后在应用程序类的InitInstance加上下面初始化代码:




    上面代码的作用是初始化GDI+资源。


      在应用程序类的InitInstance加上下面代码:




    上面代码的作用是销毁GDI+资源。


    VC 6.0中使用GDI+库,请参考这篇文章:在VC6.0中使用GDI+的两种办法


         现在测试一下我们初始化GDI+环境是否成功。我们使用GDI+的类接口在视图客户区绘制一个字符串,具体代码如下:




    效果图如下:


    gdiplus demo




    使用GDI+一些注意事项:


    1.在DLL中使用GDI+库,只需要包含GdiPlus.h和GdiPlus.lib,初始化GDI+环境的工作只需要在主调用程序做,否则在DLL初始化代码中初始化GDI+环境容易发生DLL重入的错误(以前我犯过这样的错误)。


    2.GDI+接口参数使用的是unicode字符集,因为调用任何GDI+类接口时其字符串参数都必须确保是unicode字符。在多字节字符集环境下开发常量字符串可以通过L宏转换,变量多字节字符转unicode字符可以使用Windows API函数MultiByteToWideChar或ATL的A2W宏。


    3. GDI+的对象和GDI句柄一样,同样会占用资源,一次使用过多的GDI+的对象甚至会发生程序崩溃的现象。因此必须随时将不必要的GDI+的对象占用的资源释放掉,如上例的:graphics.ReleaseHDC(pDC->m_hDC)。


























  • 相关阅读:
    mac 版 Pycharm 激活
    最快的 maven repository--阿里镜像仓库
    java-Object
    java --replaceAll方法
    正则表达式中^[a-z]与[^a-z]有区别吗
    keyListener用的健值表,保留一份
    java播放背景音乐 mp3和mav都可以播放
    腾讯云ubuntu远程桌面
    nginx 配置转发到其他多台服务器
    java 键盘监听事件
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470973.html
Copyright © 2011-2022 走看看