[WIN32]-PNG einbinden und verwenden

Mache deine Sourcen mal als ".cpp" (C++), statt als ".c", sonst passt das nicht mit dem Gdiplus-Zeugs zusammen.
Die Variable "ULONG_PTR token;" musst du global deklarieren.

Gruß
MCoder
 
Also ich weiss nich was ich sagen soll.....

Fettes Dankeschön an euch Beide :) :) :)
Weiss nich wo ich wär ohne euch ;-) wahrscheinlich immernoch am suchen :D

Also Alles Gute euch noch

mfg Mr Apfelkuchen
 
Da is jetzt noch ein Problem... ich hab mein origramm bisher in c geschrieben und werde jetzt mit Fehlermeldungen zugeschmissen... gdi+ gibt es nicht in c oder?
 
Wie man am besten mit gemischten Sourcen umgeht, kann ich dir auch nicht so genau sagen. Versuche erst mal, allen Sourcefiles die Endung ".cpp" zu geben. Bei hartnäckigen Fällen kannst du den betreffenden Sourcecode auch kapseln:
C++:
extern "C"
{
    /* C-Code */
}
Da die SDK-Schnittstelle für GDI+ objektorientiert ist, bekommst du das nicht in ein reines C-Projekt herein.

Gruß
MCoder
 
Ist jetzt auch egal ich hab die 345 Fehlermeldungen abgearbeitet... Also das Programm funktioniert und holt sich auch die PNGs. Das dumme ist jetzt das es zum Neuzeichnen des Anwendungsbereichs einige Sekunden braucht und die Auslaustung im Taskmanager auf 99% steht... Belegen die PNGS soviel speicher oder hab ich was falsch gemacht?
 
Also einige Sekunden sollte das nun wirklich nicht dauern und auch nicht allzuviel Resourcen verbrauchen.
In meinem Beispielcode habe ich der Einfachheit habe das Laden der PNG-Datei innerhalb der WM_PAINT Message ausgeführt. Das solltest du ändern, indem du (wenn möglich) die benötigten Bilder beim Programmstart in die Bitmap-Objekte lädst und bei WM_PAINT nur das Draw() ausführst.

Gruß
MCoder
 
Das habe ich bereits getan. Ich lade die Bilder Beim Programmstart und lösche sie mit WM_DESTROY. In WM_PAINT lasse ich nur diesen Code ausführen:
Code:
if( Bmp ) {
	Gdiplus::Graphics g(hdc);
	g.DrawImage(Bmp, Gdiplus::PointF(0, 0));
}
Was auch auffällig ist: Manche Bilder erscheinen kleiner und manche größer als ihre eigendliche Größe!
 
Was auch auffällig ist: Manche Bilder erscheinen kleiner und manche größer als ihre eigendliche Größe!
Mit dem angegebenen Code sollten sie eigentlich in Originalgröße angezeigt und ggf. abgeschnitten werden. Für DrawImage gibt es verschiedene Überladungen, wo man neben der Ausgabeposition auch die Zeichengröße mit angeben kann. Evt. probierst du mal damit herum.
Für das Zeit- und Resourcenproblem habe ich keine Erklärung. Vielleicht zeigst du nochmal den aktuellen Code.

Gruß
MCoder
 
Der aktuelle Code ist 5000 Zeilen lang...
Kann das auch an den Bildern liegen? Ich hab die mit Transperenz gemacht aber das kann doch nicht der Fehler sein oder?

Antwort: Doch Ich hatte die Bilder mit Photoshop gemacht... wenn ich die danach nochmal smit Pain öffne und die da speicher dann geht das... aber warum haben die mit Photoshop erzeugten so ein Bug?
 
Zuletzt bearbeitet:
Photoshop kenne ich nicht, aber bei Corel Photopaint ist der PNG-Support auch eine Zumutung. Ich nehme dann für sowas immer GIMP (kann übrigens auch psd-Dateien öffnen).

Gruß
MCoder
 

Neue Beiträge

Zurück