【问题标题】:Using GDI+ Bitmap使用 GDI+ 位图
【发布时间】:2009-02-06 08:23:55
【问题描述】:

我正在使用 GDI+ Bitmap 类将 IStream 转换为 HBITMAP。我在链接器输入中包含了 gliplus lib 文件,并且在构建路径中也包含了 dll。但是使用语句

Bitmap bm(lpStream,FALSE);

给我一​​个错误 C2065: 'Bitmap' : undeclared identifier

有人可以告诉我我在这里做错了什么。

谢谢。

编辑
我已经在我的实现中包含了适当的标题(gdiplus.h),我可以通过在上下文菜单中选择“转到定义”选项来查看位图的定义。

【问题讨论】:

    标签: visual-studio-2008 visual-c++ gdi+


    【解决方案1】:

    除了命名空间的问题,使用Gdiplus还需要在使用前对库进行初始化:

    ULONG_PTR gdiplusToken;
    GdiplusStartupInput startupInput;
    GdiplusStartup(&gdiplusToken, &startupInput, 0);
    

    你需要持有令牌直到你使用完 Gdiplus,然后释放它:

    GdiplusShutdown(gdiplusToken);
    

    如果库未初始化,Gdiplus 操作将失败并出现错误 GdiplusNotInitialized。

    【讨论】:

      【解决方案2】:

      您还需要包含相关的头文件。猜测一下,它的名称可能类似于“Bitmap.h”或“gdi+.h”。

      Bitmap class here 有更多详细信息。正确的头文件是“gdiplus.h”。简而言之:

      #include "gdiplus.h"
      
      Constructor Information
      
      Stock Implementation  gdiplus.dll
      Header    Declared in Gdiplusheaders.h, include gdiplus.h
      Import library    gdiplus.lib
      Minimum availability  GDI+ 1.0
      Minimum operating systems  Windows 98/Me, Windows XP, Windows 2000,
      

      Windows NT 4.0 SP6

      在 MSDN 的表格中,它显示“Header”,它告诉您需要包含的头文件的名称。您已经介绍过的“导入库”。如果你错过了,你会得到一个链接错误。

      编辑: In this article on getting started with GDI+,您似乎需要指定一个命名空间“Gdiplus”。要么使用“使用命名空间 Gdiplus”,要么明确指定命名空间。

      #include <windows.h>
      #include <gdiplus.h>
      using namespace Gdiplus;
      
      VOID OnPaint(HDC hdc)
      {
         Graphics graphics(hdc);
         Pen      pen(Color(255, 0, 0, 255));
         graphics.DrawLine(&pen, 0, 0, 200, 100);
      }
      

      【讨论】:

      • 嗨。我已经在课堂上包含了 gdiplus.h。 Visual Studio 也打开了类的定义,所以我知道标题已被识别。但它仍然无法编译。
      • 您是在源文件中还是在预编译的头文件(stdafx.h)中包含了它?如果是后者,则需要重建预编译头文件。
      • 我这样做是为了更安全。我做了一个干净的构建
      • 您应该检查命名空间是否存在,或者是否存在需要定义的预定义预处理器符号?
      • 有一个命名空间叫“Gdiplus”
      猜你喜欢
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 2010-09-16
      • 2013-01-01
      • 2011-09-05
      • 2011-09-01
      • 2011-12-27
      相关资源
      最近更新 更多