GDI+ und Image load - problem geloest



  • hallo leute,

    ich versuche seit heute mich mal mit gdi+. mir ist auch schon gelungen einige rechtecke und kreise zu malen. nun habe ich versucht ein png bild zu laden aber sobald ich es laden will stuerzt das programm ab:

    Image pngRace(L"./data/strecken/brasilien.png");
    

    bei der funktion

    DllExports::GdipLoadImageFromFile(
                filename, 
                &nativeImage
            );
    

    die datei existiert, ich hab es auch schon mit jpg versucht, kein unterschied.

    stuerzt das programm ab, da nativeImage NULL bleibt. Ist jemanden von euch das auch schon vorgekommen?

    software: win vista, vc++ 2008 express

    danke fuer eure hilfe

    msp



  • Du hast das Bild schon nicht einfach nur umbenannt, oder?
    Ich bin nämlich nicht sicher, ob .png unterstützt wird.

    Was du auf jeden Fall machen kannst ist mal mit GetLastError zu schauen, was genau für ein Fehler passiert.



  • hallo,

    also die datei existiert definitiv, ich pruefe es vorher. png dateien sollten damit funktionieren, jedenfalls sagt das die doku.

    eine ordentliche fehlermeldung hab ich leider noch nicht bekommen koennen.
    das problem tritt in der datei GDIPlusBitmap.h auf.

    msp



  • hi,

    ich kann auch bestätigen, das PNG dateien mit gdi+ sich laden lassen.
    kannst du uns etwas mehr infos zu den fehler geben?
    Wie drakon schon gesagt hat wäre GetLastError interessant oder stürzt dein programm so hart ab, das es komplett weg ist?



  • ach ja, hast du GDI+ richtig initialisiert?

    ULONG_PTR			m_gdiplusToken;
    
    Gdiplus::GdiplusStartupInput gdiplusStartupInput;
    Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
    

    und beim beenden:

    Gdiplus::GdiplusShutdown(m_gdiplusToken);
    


  • hi knob,

    also mehr infos kann ich leider noch nicht geben, aber inizialisiert hab ich es denke ich richtig und auch wieder beendet.

    momentan bin ich leide rnicht zu hause, ich kann aber nachher mal meine ausgabecode posten. und linien und kreise zeichnen funktioniert ja.

    mein programm unterbricht direk in der funktion "DllExports::GdipLoadImageFromFile(
    filename,
    &nativeImage
    );"
    und sagt mir nativeImage = NULL. wenn ich "weiter" klicke dann kommt genau die gleiche unterbrechung wieder.

    finde das alles sehr merkwuerdig.

    gruss
    msp



  • vllt. kommt GDI+ mit den '/' (statt wie unter Windows üblich '\') nicht klar?

    png's kann GDI+ auf jedenfall öffnen, sowohl die truecolor als auch die indexierte variante...



  • hallo,

    also die variante hatte ich auch schon getestet. ich habe auch schon die datei ins verzeichnis der exe-datei gestellt und ausgefuehrt, keine aenderung. ich pruefe auch vorher ob die datei existiert, und da gibt es auch keinen fehler. die datei ist also da und wird erkannt, im debugger kann man auch sehen das der pfad zur datei stimmt. nur mehr informationen bekomme ich leider nicht raus.

    ich werde mal ein ganz neues projekt nochmal anlegen und ausprobieren, vielleicht hilft das.

    danke fuer eure zahlreichen ideen schonmal.

    gruss
    msp



  • Probier es mal mit diesen Code. damit lad ich meine PNG's.
    Ich hoffe das läuft jetzt... habs nur schnell zusammne kopiert. "Datei.png" gegen deine Datei ersetzten (ist 2x drin!!!)

    int	filenameSize;
    LPWSTR	filenameWSTR;
    
    // File
    filenameSize = MultiByteToWideChar(CP_THREAD_ACP, MB_PRECOMPOSED, "Datei.png", -1, 0, 0);
    filenameWSTR = (LPWSTR) malloc(filenameSize * sizeof(LPWSTR));
    
    MultiByteToWideChar(CP_THREAD_ACP, MB_PRECOMPOSED, "Datei.png", -1, filenameWSTR, filenameSize);
    
    free (filenameWSTR);
    
    Bitmap imageBitmap(filenameWSTR);
    


  • hi knob,

    es war wohl der typ des bildes. ich habe anstatt des typs "Bitmap" den typ "Image" benutzt.

    dank deiner hilfe gehts jetzt endlich.

    danke.

    msp


Anmelden zum Antworten