Bilder



  • Hi allerseits

    Gibt es irgendwo eine einfache Bibliothek bzw. am liebsten eine kleine Header-File, mit welcher man Grafikdateien erstellen kann (JPEGs, GIFs, etc.). Es sollte möglich sein, eine Grafik zu erstellen, zu bearbeiten (z.B. drawLine(), drawString, oder so...) und das Bild dann im Filesystem zu speichern bzw. per CGI an einen Webclient zu geben.

    Bedingung: Das ganze sollte rückwärtskompatibel zu einem 80186er Prozessor sein. Daher möchte ich auch keine grosse Library verwenden, die meisten habe ich schon erfolglos durchprobiert.

    Danke für eure Hilfe und Gruss
    Pascal



  • wie wäre es mit windows.h ? 😉



  • Musst du mir schon etwas genauer erklären 😕

    Tutorial? Code-Beispiele? 🙂

    google hat mich diesbezüglich nämlich bereits enttäuscht...



  • jup setagllib hat recht, versuchs doch mit der stinknormalen WinAPI 😃
    Kann ich davon ausgehen das du weißt was die WinApi ist?



  • Ok, ich glaube, des Rätsels Lösung lag tatsächlich vor meiner Nase 🙂

    Trotzdem stellt sich mir ein Problem: Ich habe sehr viele Beispiele gefunden, in denen man sich einen DeviceContext hat geben lassen (vom Windowmanager, wenn ich mich nicht täusche) und auf selbigem dann seine Zeichenfunktionen ausgeführt hat.

    Mein Problem ist es nun, so einen DeviceContext für mein Bitmap zu kreieren (ein HBITMAP erstellen hat schon prima geklappt, danke Jungs 😉 ), damit ich auf dem Bild zeichnen kann und es dann anschliessend sonstwohin packen kann.

    Ich habe ganz google durchsucht und überall nur gelesen, dass es geht und wie einfach es doch geht.

    Aber nicht wie es geht 😃

    Kann mir da jemand also aushelfen (am liebsten mit etwas Code-Example, denn die ganze Googelei geht mir langsam auf'n Sack 🤡 )

    Danke und Gruss
    Pascal



  • Also erstmal: Wenn du WinAPI machen willst, bist du im falschen Sub-Forum...guck dafür mal ins WinAPI Forum...

    Dann mal was zum Thema:
    Man unterscheidet einmal zwischen einem Geräte-Kontext und einem Speicherkontext.
    Einen Geräte-Kontext forderst du mit GetDC(HWND) bzw. mit BeginPaint(HWND,PAINTSTRUCT) an und einen Speicherkontext mittels CreateDC(...) bzw CreateCompatibleDC(HDC). Es ist jedoch sehr wichtig die Unterschiede zwischen diesen Funktionen zu verstehen, da man sonst s.g. GDI-Leaks( ⚠ ) macht, die sehr fatale Folgen haben können. Dazu gehört nämlich auch das s.g. GDI-CleanUp, wofür die WinAPI auch Funktionen bereit stellt. Du solltes dir vllt. diesbezüglich einfach mal Tutorials suchen.

    Hier vllt. noch ein paar nützliche Links für das Bearbeiten von Bildern bzw das Umgehen mit einem DC:

    - Bild speichern
    - Double-Buffering (was: BackBuffer) (spezialisierter)
    - Mit Fenster arbeiten- Welche GUI? Wo gibt es gute Tuts? (Allgemein, Windows-Pogrammierung)
    - JPEGs/GIFs/etc laden und darstellen

    Hoffe mal das war hilfreich 😉

    @Mod: Mal nach WinAPI verschieben 👍



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hey, danke, so könnt's sogar klappen 🙂

    Allerdings tritt bei mir da schon der nächste Stolperstein auf:

    #include <windows.h>
    
    void main(void)
    {
       BITMAPINFOHEADER bmInfoHeader;
       HBITMAP hbImage;
    
       HDC dcMain = CreateCompatibleDC(NULL);
    
    }
    

    Wenn ich das mit Borland 5.02 (Project Settings DOS standard, 80186er Prozessor) kompiliere, gibt's beim kompilieren selbst zwar keine Fehler, beim Linken mit TLINK jedoch erscheint folgende Meldung:

    "Undefined symbol CREATECOMPATIBLED in module chart.cpp"

    Aus dem ganzen resultiert sogar eine EXE, aber beim Ausführen stürzt sie sogleich ab (mit irgendwelchem OP-Code als Fehlermeldung 😞 )

    Woran kann das liegen?



  • "Undefined symbol CREATECOMPATIBLEDC in module chart.cpp"

    meine ich natürlich 😕



  • Hmm wenns ne Win32-Konsolenanwendung werden soll, kann es sein, dass du noch Bibliotheken mit linken muss...
    Musst du mal gucken, welche für die Funktion CreateCompatibleDC(...) benötigt wird...glaube das war user32.lib.

    Da ich kein Borland benutze weiß ich nicht wie man da Libs einbindet, in M$ Visual C++ gehts so:

    #pragma comment(lib, "Name.lib")
    

    Oder nat. über die Projekteinstellungen. :p

    💡 ➡ Musst du mal inner Anleitung deines Compilers gucken.


Anmelden zum Antworten