Die Windows GDI+ (Teil 1)
-
Mein Problem war das Löschen des Objektes nicht das Anlegen.
Selbst wenn ich beim Anlegen des Objekts eine Fehlermeldung bekomme, muss ich davon ausgehen können, dass ein zurückgeliefertes Objekt auch mit delete zu löschen ist.
(Ein Objekt sollte nie in einen solchen Zustand versetzt werden können, dass man es nicht mehr löschen kann und genau das ist an der Stelle passiert.)Ich hab mittlerweile herausgefunden, dass beim Zeichnen das falsche Graphics-Objekt verwendet wurde und dadurch die Speicherverwaltung von GDI+ durcheinander gekommen ist.
Damit ist der Fehler weg und das Vertrauen in GDI+ ungemein gefördert.
-
Hatte vor einiger Zeit GDI+ Pakete für MinGW und BC5.5 erstellt. Man kann sie unter http://www.dhost.info/voodoocpp/index.php?page=progs/libs downloaden. Header und import Bibliotheken sind enthalten. Dokumentation und gdiplus.dll muss man sich von MS besorgen.
Das IN/OUT bei den Methodendefinitionen ist an sich überflüssig. Das sind defines die zu nichts expandieren.
-
Artchi schrieb:
Die GDI+ ist nämlich ansonsten eher kein Problemkind. Und wenn sie beim TC++ im Lieferumfang war, müsste sie auch funktionieren.
Naja, stimmt zwar in der Regel schon, aber ich hatte auch erst vor kurzem Probleme mit besagter GdiplusEnums.h. Und ich benutze MSVC 2005, und da sollte es eigentlich gar keine Probleme geben. Wie dem auch sei... hab halt massig Fehler gekriegt obwohl der Code korrekt war. Letztendlich hab ich dann einfach die afxdisp.h vor dem Gdiplus Header inkludiert und dann ging wieder alles. Lag halt wohl irgendwie daran dass ich auch die MFC teilweise benutze. Ist aber trotzdem nicht gerade toll
Wobei dass ja sogar noch geht wenn ich mir andere Sachen vom Platform SDK anschaue.. was MS da z.T. für ne Scheisse gebaut hat...
-
jano schrieb:
Hallo.
Ich bin sicher es hat damit zu tun das ich grundsätzlich noch nicht so fit bit mit dem MVC++ 2005 Express und c++.
Ich bekomme nur Fehlermeldungen.Folgendes habe ich gemacht.
1. File/New Projekt
2. Auswahl WIN32/Win32 Console Applikation
3. Next => Windows Applikation
4. OK drücken
5. Wo muß ich den nun den Code einbinden?Sorry. Sicher dumme Frage.
Danke jano
Console Applikation ist nicht die richtige Auswahl. Wie bitte schön möchtest du in ein DOS Consolenfenster etwas grafisches zeichnen??
-
Man kann auch in einem Konsolenprogramm ein grafisches Fenster öffnen. Also kein Problem.
-
Gibt es schon eine Fortsetzung des Tutorials?
-
Bisher gibt es kein Teil 2. Es gab bisher auch nicht wirklich einen Wunsch nach einem weiteren Teil. Wennaber hier schon die ersten Nachfragen kommen, kann ich mir was überlegen.
-
Hallo
Ich fänd es auch schön, wenn du noch ein weiterer Artikel hinzukommen würde. Viellecith was mit Bitmaps udn noch ein paar versteckten Gimmicks, weil das alles ja sehr selbsterklärend wirkt.
chrische
-
Nja eigentlich ist doch alles logisch ...
aja ... schöne Serie zum Theme:
http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c10673/
http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c10621/
http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c10559/
http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c3681/
http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c3657/
http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c3677/
http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c3675/
http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c3655/
http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c3679/
http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c3667/
-
mein tipp: lasst die finger vom gdi+. es wird nicht weiter entwickelt, hat tausend bugs die nicht gefixt werden und ist laaaaangsaaaam.
-
Hallo
Na das ist doch mal eine fundierte Meinung.
chrische
-
chrische5 schrieb:
Na das ist doch mal eine fundierte Meinung.
jeder der sich mal ernsthaft (abseits eures heimprogrammiererniveaus) mit gdi+ auseinandergesetzt hat, wird meine äußerst fundierte meinung teilen.
-
Hallo
zzZZz schrieb:
chrische5 schrieb:
Na das ist doch mal eine fundierte Meinung.
jeder der sich mal ernsthaft (abseits eures heimprogrammiererniveaus) mit gdi+ auseinandergesetzt hat, wird meine äußerst fundierte meinung teilen.
Wow, du zeigst aber Krallen. Du äußerst halt nur eine Meinung, ohne Links oder ähnliches und dazu bist du nicht registriert und von daher weiß man halt nicht, was man von deiner Meinung halten soll. Obwohl ich ihr nicht einmal entgegen stehe.
chrische
-
in welcher Programmiersprache ist GDI+ entwickelt worden? C# oder C++? wenn man sich die Headerdateien so anschaut so sind die C++ Klassen einfach nur ein Wrapper um irgendeine Bibliothek, die z. B. mit C# programmiert worden sein könnte...
-
GDI+ ist eine native API neben der GDI. Hat absolut nichts mit C# zu tun, da man für die GDI+ kein .NET-Framework benötigt. Aber das .NET-Framework macht tatsächlich von GDI+ gebrauch. Mehr nicht.
-
Mich würde aber jetzt auch mal interessieren was so schlimm an GDI+ sein soll? Ich habe das hier nämlich auf der Arbeit eingesetzt und war eigentlich ganz zufrieden damit. Es ist natürlich etwas "langsam", da ich verdammt viele Daten zeichnen muss, aber ich denke beim normalen "nativen" GDI wäre das auch nicht wirklich schneller. Soll aber nicht heißen, dass ich denke ich wüsste es besser. Ich würde nur wirklich gerne *fundiert und begründet* wissen, was so schlecht an GDI+ ist.
-
zZzZz schrieb:
mein tipp: lasst die finger vom gdi+. es wird nicht weiter entwickelt, hat tausend bugs die nicht gefixt werden und ist laaaaangsaaaam.
Hallo, kann man das jetzt ernst nehmen oder eher der "Anti-Microsoft-User" Abteilung zuordnen? Ich möchte mich nämlich im Gebiet Bildbearbeitung festsetzen (im Laufe der Zeit eine eigne Bildbearbeitungssoftware ins Leben rufen) und frage mich, ob GDI+ einen guten "Start" darstellt?
Dem Autoren dieser Einführung möchte an dieser Stelle einen großen Dank
aussprechen.MfG
Martin
-
MartinG schrieb:
zZzZz schrieb:
mein tipp: lasst die finger vom gdi+. es wird nicht weiter entwickelt, hat tausend bugs die nicht gefixt werden und ist laaaaangsaaaam.
Hallo, kann man das jetzt ernst nehmen oder eher der "Anti-Microsoft-User" Abteilung zuordnen? Ich möchte mich nämlich im Gebiet Bildbearbeitung festsetzen (im Laufe der Zeit eine eigne Bildbearbeitungssoftware ins Leben rufen) und frage mich, ob GDI+ einen guten "Start" darstellt?
Für den Fall, dass unser "zZzZ-Freund" rechtbehält könntest du die Befehle von GDI+, die du brauchst durch eigene Klassen aufrufen. Du könntest auch Befehle von DX dazumixen und desssen Vorteile nutzen, z.B um schnell ein Gitternetz zu zeichnen.
Der Aufwand wäre hoch aber wenn du dich in der Graphikbearbeitung festsetzten möchtest, könnte es das Wert sein.
Falls nun tatsächlich aus irgendwelchen Gründen GDI+ nicht mehr so toll ist und du auf etwas anderes umsteigen möchtest, müsstest du nur eine Stelle deines Projektes anpassen.
-
MartinG schrieb:
zZzZz schrieb:
mein tipp: lasst die finger vom gdi+. es wird nicht weiter entwickelt, hat tausend bugs die nicht gefixt werden und ist laaaaangsaaaam.
Hallo, kann man das jetzt ernst nehmen oder eher der "Anti-Microsoft-User" Abteilung zuordnen? Ich möchte mich nämlich im Gbiet Bildbearbeitung festsetzen (im Laufe der Zeit eine eigne Bildbearbeitungssoftware ins Leben rufen) und frage mich, ob GDI+ einen guten "Start" darstellt?
Für Bildbearbeitung spielt es nun wirklich keine Rolle, welche Plattform du verwendest. Bilder anzeigen können sie alle und der Rest passiert offscreen und ist unabhängig vom API.
Was du suchst, ist eine Bildbearbeitungs-Bibliothek. Das ist GDI+ nicht. Und ja, GDI+ ist in einigen Bereichen tatsächlich relativ langsam und hat auch seit Jahren kein Update mehr erfahren.
SilentRob schrieb:
Falls nun tatsächlich aus irgendwelchen Gründen GDI+ nicht mehr so toll ist und du auf etwas anderes umsteigen möchtest, müsstest du nur eine Stelle deines Projektes anpassen.
Das trifft natürlich auch auf jedes andere API zu und nicht bloß auf GDI+.
-
MartinG schrieb:
Hallo, kann man das jetzt ernst nehmen oder eher der "Anti-Microsoft-User" Abteilung zuordnen? Ich möchte mich nämlich im Gebiet Bildbearbeitung festsetzen (im Laufe der Zeit eine eigne Bildbearbeitungssoftware ins Leben rufen) und frage mich, ob GDI+ einen guten "Start" darstellt?
Kann man nicht ernst nehmen, da der Kritiker keine Fakten geliefert hat. Und somit ist er nicht mal ein Kritiker sondern einfach nur ein Troll.
Die GDI+ würde ich für die Windows-Programmierung empfehlen. DIe GDI+ hat keine Alleinstellungsmerkmale, es gibt auch andere Bibliotheken, die ähnlich Aufgaben erfülln. Aber es ist nunmal eine Lib die ab WinXP serienmäßig dabei ist.
Für EBV (elektr. Bildverarbeitung) bringt sie auch gute Basisfunktionalität mit. Egal ob es Skalierung, Rotation oder Farbwertmanipulation ist. Sie liest und schreibt auch gleich viele Formate von Haus aus.
Eine EBV-Software muss eh mit der Zeit wachsen. Wenn du super spezielle Effekte haben willst, bekommst du diese eh in keiner kostenlosen Library. Also wirst du eh irgendwann eigene Algorithmen entwickeln müssen. Und ob dadrunter dann GDI+, Cairo oder sonst was werkelt, ist nicht so entscheidend. Denn dann wirst du ja jeden Pixel selber bearbeiten müssen.
Was auch eine Möglichkeit wäre, ist GIL von Adobe.