screenshot
-
geeky schrieb:
Imho, müsstest du - selbst wenn der BI_PNG-Fehler nicht kommen würde - das Bild dann selber 'händisch' komprimieren, das passiert dann nicht automatisch!
Die Methode unter flender's link ist da viiiieeeel einfacher - Du musst nicht selber komprimieren und nicht mit CreateFile() rumhampeln, etc...
und du könntest das sehr schnell auf z.B. jpeg umändern!ach so....ich dachte das geht automatisch!!! bitte hilft mir mal
ich versuchs mal so zu machen:
int dc2bitmap(HDC hdc, int width, int height, char *filename) { Graphics graphics(hdc); // Create an Image object based on a PNG file. Image image(L+filename); // Draw the image. graphics.DrawImage(&image, width, height); // Construct a Graphics object based on the image. Graphics imageGraphics(&image); // Alter the image. SolidBrush brush(Color(255, 0, 0, 255)); imageGraphics.FillEllipse(&brush, 20, 30, 80, 50); // Draw the altered image. graphics.DrawImage(&image, 200, 10); // Save the altered image. CLSID pngClsid; GetEncoderClsid(L"image/png", &pngClsid); image.Save(L+filename, &pngClsid, NULL); }ich bekomme einige error:
zb.: error C2065: 'Graphics' : nichtdeklarierter Bezeichnerdiese Header braucht man: Gdiplusheaders.h, include gdiplus.h
aber ich kann die nicht finden!????
library hab ich nicht: gdiplus.libbitte um answere!
thx

-
markoo schrieb:
library hab ich nicht: gdiplus.lib
Na, woher wird deine Fehlermeldung dann wohl kommen? Ich verlinke dich auf die Seite, auf der du die gdiplus.dll bekommst.
EDIT: Das Geile ist: die von MS meinen zwar, man hätte standardmäßig diese DLL in WinXP dabei - ich habe sie nicht!
-
WebFritzi schrieb:
markoo schrieb:
library hab ich nicht: gdiplus.lib
Na, woher wird deine Fehlermeldung dann wohl kommen? Ich verlinke dich auf die Seite, auf der du die gdiplus.dll bekommst.
EDIT: Das Geile ist: die von MS meinen zwar, man hätte standardmäßig diese DLL in WinXP dabei - ich habe sie nicht!
webfritzi...gesagt, getan: aber nicht erfolgreich!! das öffnen der dll ist erfolgreich...... hmmmmmm versteh das nicht!!!!!!!!!!! wäre um einen weiteren ratschlag sehr dankbar!
thx

// gdiplus.dll laden: HINSTANCE hLib = LoadLibrary("gdiplus.dll"); if(hLib == NULL) { MessageBox(NULL,"Fehler: gdiplus.DLL konnte nicht geladen werden !","error", 0); return 0; } // Aufräumen: FreeLibrary(hLib);errors sind wieder gleich:
zb.:
screen.cpp(138) : error C2065: 'Graphics' : nichtdeklarierter Bezeichner
-
Hallo,
die gdiplus.dll ist, wie von MS behauptet, bei XP dabei. Sie befindet sich in einem der side-by-side(C:\Windows\WinSxS)-Verzeichnisse (neuere Anwendungen sollen ihre DLLs in diese Verzeichnisse platzieren, um Versionsprobleme zu vermeiden, Stichwort: DLL Hell..., deswegen relativ schwer zu finden)
@markoo:
du hast oben schon geschrieben, daß dir die Header-Dateien (Gdiplusheaders.h, gdiplus.h) fehlen, deswegen kann das so nichts werden. Diese Header bekommst du z.B. durch eine Aktualisierung des Platform SDK hier:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
MfG
-
Probe-Nutzer schrieb:
Hallo,
du hast oben schon geschrieben, daß dir die Header-Dateien (Gdiplusheaders.h, gdiplus.h) fehlen, deswegen kann das so nichts werden. Diese Header bekommst du z.B. durch eine Aktualisierung des Platform SDK hier:http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
MfG
vielen dank probe-nutzer!!! das gesamte update ist so bei 200mb....das ist relativ viel!
was brauch ich da alles:
1.) Internet Development SDK (Version 6.0)
2.) Internet Information Server SDK (Version 5.1)
3.) Windows Installer SDK (Version 2.0)
4.) WMI SDKmir sagn die sachn nicht viel!!! thx

-
es reicht das "Core SDK", wenn du das anklickst, dann siehst du schon in der Beschreibung der Komponenten "Graphics (GDI, GDI+, ICM, OpenGL, WIA, Windows Media
)", also genau das, was du brauchst. Du mußt es nach dem Herunterladen noch richtig einbinden, also beachte alle Installations-Hinweise, die du dort nachlesen kannstMfG
-
Probe-Nutzer schrieb:
es reicht das "Core SDK", wenn du das anklickst, dann siehst du schon in der Beschreibung der Komponenten "Graphics (GDI, GDI+, ICM, OpenGL, WIA, Windows Media
)", also genau das, was du brauchst. Du mußt es nach dem Herunterladen noch richtig einbinden, also beachte alle Installations-Hinweise, die du dort nachlesen kannstMfG
vielen dank probe nutzer!!
schau mal:Core SDK (Windows Server 2003)
201.7 MB / Download Time: 8 hr 11 min / Updated: February 2003
(Build 5.2.3790.0) Read This First
Build environment (31 MB)
Build environment (Intel 64-bit) (67.6 MB)
Documentation (release and prerelease) (91.6 MB)
Sample and source code (10.6 MB)--------------------------------------------------------------------------------
Update Dependencies
The SDKs you have selected require the following components, which will also be installed.
Windows Installer Control
40 KB / Download Time: < 1 min / Updated: Tuesday, April 01, 2003
Performs the installation of Windows Installer files on your computer. (Build 5.2.3790.0)
Installation Control (40 KB)Common Setup Files
11.7 MB / Download Time: 1 hr 18 min / Updated: February 2003
(Build 5.2.3790.0)
Common Setup Files (11.7 MB)Download size: 179.4 MB
179mb stimmt das? hmmm...
thx

-
Build environment (Intel 64-bit) (67.6 MB)
Documentation (release and prerelease) (91.6 MB)das brauch ich e nicht....hab keinen 64 bit prozessor!!
thx

-
hab sdk erfolgreich installiert:
und in projekt die libs eingebunden:
#include "C:\Programme\Microsoft SDK\include\gdiplusheaders.h"
#include "C:\Programme\Microsoft SDK\include\gdiplus.h"aber 102 error:
c:\programme\microsoft sdk\include\gdiplusheaders.h(23) : error C2504: 'GdiplusBase' : Basisklasse undefiniert
c:\programme\microsoft sdk\include\gdiplusheaders.h(28) : error C2629: 'class Region (' unerwartet
c:\programme\microsoft sdk\include\gdiplusheaders.h(28) : error C2238: Unerwartete(s) Token vor ';'
c:\programme\microsoft sdk\include\gdiplusheaders.h(29) : error C2629: 'class Region (' unerwartet
c:\programme\microsoft sdk\include\gdiplusheaders.h(29) : error C2238: Unerwartete(s) Token vor ';'
c:\programme\microsoft sdk\include\gdiplusheaders.h(30) : error C2629: 'class Region (' unerwartet
c:\programme\microsoft sdk\include\gdiplusheaders.h(30) : error C2238: Unerwartete(s) Token vor ';'
c:\programme\microsoft sdk\include\gdiplusheaders.h(38) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'MakeInfinite'
c:\programme\microsoft sdk\include\gdiplusheaders.h(38) : error C2501: 'Status' : Fehlende Speicherklasse oder Typbezeichner
c:\programme\microsoft sdk\include\gdiplusheaders.h(39) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'MakeEmpty'
c:\programme\microsoft sdk\include\gdiplusheaders.h(39) : error C2501: 'Status' : Fehlende Speicherklasse oder Typbezeichnerversteh das nimma;-(
thx

-
Gdiplusheaders.h, include gdiplus.h
Also sollst du nicht direkt Gdiplusheaders.h einbinden, sondern nur gdiplus.h

Außerdem solltest du die Pfade zum SDK (wenn das bei dir nicht automatisch bzw. über eine Verknüpfung gemacht wurde) unter Extras > Optionen > Verzeichnisse (Include-Dateien / Bibliothekdateien) eintragen (an erster Stelle) - dann brauchst du beim include auch nicht mehr den kompletten Pfad angeben

-
ok hab den pfad angegeben....und include nur mehr gdiplus.h

dann kommt das:
--------------------Konfiguration: screen - Win32 Debug--------------------
Kompilierung läuft...
main.cpp
c:\programme\microsoft sdk\include\gdiplusinit.h(32) : error C2065: 'ULONG_PTR' : nichtdeklarierter Bezeichner
c:\programme\microsoft sdk\include\gdiplusinit.h(32) : error C2065: 'token' : nichtdeklarierter Bezeichner
c:\programme\microsoft sdk\include\gdiplusinit.h(32) : error C2165: 'left-side modifier' : Zeiger auf Daten koennen nicht veraendert werden
c:\programme\microsoft sdk\include\gdiplusinit.h(32) : error C2071: 'NotificationHookProc' : ungueltige Speicherklasse
c:\programme\microsoft sdk\include\gdiplusinit.h(33) : error C2146: Syntaxfehler : Fehlendes ')' vor Bezeichner 'token'
c:\programme\microsoft sdk\include\gdiplusinit.h(33) : error C2165: 'left-side modifier' : Zeiger auf Daten koennen nicht veraendert werden
c:\programme\microsoft sdk\include\gdiplusinit.h(33) : error C2071: 'NotificationUnhookProc' : ungueltige Speicherklasse
c:\programme\microsoft sdk\include\gdiplusinit.h(33) : error C2059: Syntaxfehler : ')'
c:\programme\microsoft sdk\include\gdiplusinit.h(86) : error C2059: Syntaxfehler : 'const'
c:\programme\microsoft sdk\include\gdiplusinit.h(95) : error C2146: Syntaxfehler : Fehlendes ')' vor Bezeichner 'token'
c:\programme\microsoft sdk\include\gdiplusinit.h(95) : warning C4229: Anachronismus verwendet : Modifizierer der Daten werden ignoriert
c:\programme\microsoft sdk\include\gdiplusinit.h(95) : error C2182: 'GdiplusShutdown' : Ungueltige Verwendung des Typs 'void'
c:\programme\microsoft sdk\include\gdiplusinit.h(95) : error C2059: Syntaxfehler : ')'
c:\programme\microsoft sdk\include\gdiplusflat.h(2639) : warning C4229: Anachronismus verwendet : Modifizierer der Daten werden ignoriert
c:\programme\microsoft sdk\include\gdiplusflat.h(2639) : error C2440: 'initializing' : 'int' kann nicht in 'enum Gdiplus::Status' konvertiert werden
Konvertierung in einen Aufzaehlungstypen erfordert explizite Typumwandlung (static_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat)
c:\programme\microsoft sdk\include\gdiplusflat.h(2644) : error C2146: Syntaxfehler : Fehlendes ')' vor Bezeichner 'token'
c:\programme\microsoft sdk\include\gdiplusflat.h(2644) : warning C4229: Anachronismus verwendet : Modifizierer der Daten werden ignoriert
c:\programme\microsoft sdk\include\gdiplusflat.h(2644) : error C2182: 'GdiplusNotificationUnhook' : Ungueltige Verwendung des Typs 'void'
c:\programme\microsoft sdk\include\gdiplusflat.h(2644) : error C2059: Syntaxfehler : ')'
c:\screen\main.cpp(143) : error C2065: 'Graphics' : nichtdeklarierter Bezeichner
c:\screen\main.cpp(143) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'graphics'
c:\screen\main.cpp(143) : error C2065: 'graphics' : nichtdeklarierter Bezeichner
c:\screen\main.cpp(146) : error C2065: 'Image' : nichtdeklarierter Bezeichner
c:\screen\main.cpp(146) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'image'
c:\screen\main.cpp(146) : error C2065: 'image' : nichtdeklarierter Bezeichner
c:\screen\main.cpp(146) : error C2065: 'L' : nichtdeklarierter Bezeichner
c:\screen\main.cpp(149) : error C2228: Der linke Teil von '.DrawImage' muss eine Klasse/Struktur/Union sein
c:\screen\main.cpp(152) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'imageGraphics'
c:\screen\main.cpp(152) : error C2065: 'imageGraphics' : nichtdeklarierter Bezeichner
c:\screen\main.cpp(155) : error C2065: 'SolidBrush' : nichtdeklarierter Bezeichner
c:\screen\main.cpp(155) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'brush'
c:\screen\main.cpp(155) : error C2065: 'brush' : nichtdeklarierter Bezeichner
c:\screen\main.cpp(155) : error C2065: 'Color' : nichtdeklarierter Bezeichner
c:\screen\main.cpp(156) : error C2228: Der linke Teil von '.FillEllipse' muss eine Klasse/Struktur/Union sein
c:\screen\main.cpp(159) : error C2228: Der linke Teil von '.DrawImage' muss eine Klasse/Struktur/Union sein
c:\screen\main.cpp(163) : error C2065: 'GetEncoderClsid' : nichtdeklarierter Bezeichner
c:\screen\main.cpp(164) : error C2228: Der linke Teil von '.Save' muss eine Klasse/Struktur/Union sein
Fehler beim Ausführen von cl.exe.screen.exe - 34 Fehler, 3 Warnung(en)
noch was vergessen scheint so? sorry mit gdi arbeite ich zum erstn mal wie man merkt....;-(
thx

-
markoo schrieb:
c:\programme\microsoft sdk\include\gdiplusinit.h(32) : error C2065: 'ULONG_PTR' : nichtdeklarierter Bezeichner
Das kommt aus <basetsd.h>. Dieser Header wird über <winnt.h> automatisch eingebunden. Du hast also den Pfad zum aktuellen SDK entweder nicht richtig angegeben, oder die Such-Reihenfolge falsch gesetzt.
markoo schrieb:
sorry mit gdi arbeite ich zum erstn mal wie man merkt
Das ist kein GDI-Problem.
-
-King- schrieb:
markoo schrieb:
c:\programme\microsoft sdk\include\gdiplusinit.h(32) : error C2065: 'ULONG_PTR' : nichtdeklarierter Bezeichner
Das kommt aus <basetsd.h>. Dieser Header wird über <winnt.h> automatisch eingebunden. Du hast also den Pfad zum aktuellen SDK entweder nicht richtig angegeben, oder die Such-Reihenfolge falsch gesetzt.
markoo schrieb:
sorry mit gdi arbeite ich zum erstn mal wie man merkt
Das ist kein GDI-Problem.
danke king....konnt ich nicht wissen!!
der pfad ist ja richtig...sosnt würd er ja die #include <gdiplus.h> nicht finden! wie ändert man die such-reihenfolge....in den optionen sdk an stelle 1???thx

-
ich hab einfach #include <gdiplus.h> an stelle 1 der inculdes getan und schon geht das *lol* komisch komisch *g*
hab nun so:
#include <gdiplus.h> #include <winnt.h> #include <windows.h> #include <stdlib.h> #include <string> #include <sstream> #include <iostream> #include <stdio.h> using namespace std;--------------------Konfiguration: screen - Win32 Debug--------------------
Kompilierung läuft...
main.cpp
c:\programme\microsoft sdk\include\gdiplusenums.h(28) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'GraphicsState'
c:\programme\microsoft sdk\include\gdiplusenums.h(28) : fatal error C1004: Unerwartetes Dateiende gefunden
Fehler beim Ausführen von cl.exe.screen.exe - 2 Fehler, 0 Warnung(en)
mit diesen header error kann ich nicht anfangen;-)
thx

-
- Du sollst <winnt.h> nicht direkt inkludieren.
- Was steht denn in Zeile 28 und in der Zeile davor? Hast Du in der Zeile davor am Ende ein Semikolon vergessen?
-
-King- schrieb:
- Du sollst <winnt.h> nicht direkt inkludieren.
- Was steht denn in Zeile 28 und in der Zeile davor? Hast Du in der Zeile davor am Ende ein Semikolon vergessen?
1.) wie dann winnt.h ?
2.) das steht is ja die header: gdiplusenums.h!!:
/**************************************************************************\ * * Copyright (c) 1998-2001, Microsoft Corp. All Rights Reserved. * * Module Name: * * GdiplusEnums.h * * Abstract: * * GDI+ Enumeration Types * \**************************************************************************/ #ifndef _GDIPLUSENUMS_H #define _GDIPLUSENUMS_H //-------------------------------------------------------------------------- // Default bezier flattening tolerance in device pixels. //-------------------------------------------------------------------------- const float FlatnessDefault = 1.0f/4.0f; //-------------------------------------------------------------------------- // Graphics and Container State cookies //-------------------------------------------------------------------------- typedef UINT GraphicsState; typedef UINT GraphicsContainer; . . .thx

-
Ah, dann ist's wegen UINT. Also zunächst <windows.h> inkludieren,.
-
-King- schrieb:
Ah, dann ist's wegen UINT. Also zunächst <windows.h> inkludieren,.
ich hab so:
#include <gdiplus.h> #include <windows.h> #include <stdlib.h> #include <string> #include <sstream> #include <iostream> #include <stdio.h> using namespace std;aber gleicher error also 2 error!! ????
wenn ich so mache:
#include <gdiplus.h> #include <windows.h> . . .zb.:
main.cpp(142) : error C2065: 'Graphics' : nichtdeklarierter Bezeichner
usw...dann hab ich wieder 34 error;-(
thx

-
bei den 34 error ist so:
#include <windows.h> #include <gdiplus.h> . . .
-
Tja, dann mußt Du die Reihenfolge ändern. Du inkludierst offensichtlich die falsche <windows.h>. Du mußt den Pfad unter Extras->Optionen->Verzeichnisse weiter nach oben holen (dazu markierst Du den Pfad und drückst auf den Pfeil nach oben).