3 Stimmen

GDI+ Bitmap verwenden

Ich verwende die GDI+ Bitmap-Klasse, um einen IStream in HBITMAP zu konvertieren. Ich habe die gliplus lib-Datei in den Linker-Eingaben und auch die dll in den Build-Pfad enthalten. Aber mit der Anweisung

Bitmap bm(lpStream,FALSE);

gibt eine Fehlermeldung aus C2065: 'Bitmap' : nicht deklarierter Bezeichner

Kann mir bitte jemand sagen, was ich hier falsch mache?

Danke.

bearbeiten
Ich habe die entsprechenden Header bereits in meine Implementierung aufgenommen (gdiplus.h) und ich kann die Definition von Bitmap anzeigen, indem ich die Option "Go to definition" im Kontextmenü auswähle.

3voto

Chris Ostler Punkte 667

Neben dem Problem mit dem Namensraum erfordert die Verwendung von Gdiplus auch, dass die Bibliothek initialisiert wird, bevor sie verwendet wird:

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

Sie müssen den Token festhalten, bis Sie mit Gdiplus fertig sind, und ihn dann loslassen:

GdiplusShutdown(gdiplusToken);

Wenn die Bibliothek nicht initialisiert ist, schlagen Gdiplus-Operationen mit der Fehlermeldung GdiplusNotInitialized fehl.

2voto

1800 INFORMATION Punkte 125009

Sie müssen auch die entsprechende Header-Datei einbinden. Vermutlich wird sie einen Namen wie "Bitmap.h" oder "gdi+.h" haben.

Weitere Einzelheiten finden Sie auf der Bitmap-Klasse hier . Die richtige Header-Datei ist "gdiplus.h". Kurz gesagt:

#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

In der Tabelle in MSDN, wo "Header" steht, steht der Name der Header-Datei, die Sie einbinden müssen. Die "Import Library" haben Sie bereits behandelt. Hätten Sie das übersehen, hätten Sie einen Verknüpfungsfehler erhalten.

EDITAR: In diesem Artikel über die ersten Schritte mit GDI+ Es sieht so aus, als gäbe es einen Namespace "Gdiplus", den Sie angeben müssen. Verwenden Sie entweder "using namespace Gdiplus" oder geben Sie den Namespace explizit an.

#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);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X