screenshot



  • Hast du auch ein wenig Ahnung von C++?



  • WebFritzi schrieb:

    Hast du auch ein wenig Ahnung von C++?

    ja warum? aber nicht von bitmap;-(

    cu



  • falls du was gegen das define hast....das nicht so wichtig....da gehört oben zu den includes rauf!!!! aber wie mach ich nun das speichern?

    thx 👍



  • // Bitmap erstellen 
    Bitmap(file_name, FALSE);
    

    Was ist das?



  • WebFritzi schrieb:

    // Bitmap erstellen 
    Bitmap(file_name, FALSE);
    

    Was ist das?

    das ist das: Creates a Bitmap object based on an image file.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/GDIPlus/GDIPlusReference/Classes/BitmapClass/BitmapConstructors/Bitmap_56filename_useIcm.asp

    das wurde mir ja empfohlen!!!!

    thx 👍



  • Nein, du kannst kein C++. Lies dir nochmal ein Tutorial durch!



  • WebFritzi schrieb:

    Nein, du kannst kein C++. Lies dir nochmal ein Tutorial durch!

    hi...habs überlesen...is ja ein constructor;-)

    #define MAX_CHARACTERS 81 
    
    int dc2bitmap(HDC hdc, int width, int height, char *filename) 
    { 
       HDC hdc2; 
    
       Bitmap*     pBitmap;
       wchar_t file_name[MAX_CHARACTERS]; 
    
       // String in Unicode umwandeln 
       mbstowcs(work, filename, MAX_CHARACTERS); 
    
       // Bitmap erstellen 
       pBitmap = new Bitmap(file_name, FALSE);      // FALSE specifies that color correction is not enabled 
    
       delete pBitmap;
    
       return 1; 
    }
    

    passts nun??? wie mach ich das weiter????

    thx 👍



  • OK, du hast's kapiert. 😉 Das new brauchst du aber AFAIK nicht. Du kannst die GDI+ - Objektinstanzen IMHO alle auf dem Stack anlegen.

    EDIT: Bekommst du denn jetzt noch irgendwelche Linkerfehler, oder hast du jetzt alles ordentlich eingebunden gekriegt?



  • WebFritzi schrieb:

    OK, du hast's kapiert. 😉 Das new brauchst du aber AFAIK nicht. Du kannst die GDI+ - Objektinstanzen IMHO alle auf dem Stack anlegen.

    EDIT: Bekommst du denn jetzt noch irgendwelche Linkerfehler, oder hast du jetzt alles ordentlich eingebunden gekriegt?

    so gehts ohne error:

    int dc2bitmap(HDC hdc, int width, int height, char *filename) 
    { 
       HDC hdc2; 
    
       Bitmap* pBitmap; 
       wchar_t file_name[MAX_CHARACTERS]; 
    
       // String in Unicode umwandeln 
       mbstowcs(file_name, filename, MAX_CHARACTERS); 
    
       // Bitmap erstellen 
       pBitmap = new Bitmap(file_name, FALSE);      // FALSE specifies that color correction is not enabled 
    
       delete pBitmap; 
    
       return 1; 
    }
    

    aber das new braucht er anscheinend!!! sonst bekomm ich einen error! was soll ich als nächstes machen???
    danke webfritzi, das du an mich glaubst;-) 👍
    thx 👍



  • markoo schrieb:

    was soll ich als nächstes machen???

    Du sollst die Dokumentation lesen. Wenn noch etwas unklar ist, kannst Du gern nochmal nachfragen, aber vielleicht etwas gezielter.



  • -King- schrieb:

    markoo schrieb:

    was soll ich als nächstes machen???

    Du sollst die Dokumentation lesen. Wenn noch etwas unklar ist, kannst Du gern nochmal nachfragen, aber vielleicht etwas gezielter.

    hi, ja jetzt hab ich ein Bitmap object erstellt! wie kann ich kann ich die hdc bildinformation da rein speichern???

    thx 👍



  • Beschäftige dich doch ein wenig mit der Doku. Dann wirst du es auch herausfinden.



  • WebFritzi schrieb:

    Beschäftige dich doch ein wenig mit der Doku. Dann wirst du es auch herausfinden.

    ok gut;-) bitte gibs mir den link, weil ich bin mir nicht sicher ob ich das richtige vor hab....!?? danke webdritzi! 👍

    thx 👍



  • Den Link zur Doku hast du doch jetzt schon des öfteren bekommen 😕



  • flenders schrieb:

    Den Link zur Doku hast du doch jetzt schon des öfteren bekommen 😕

    jo! aber ich weiß nicht mehr genau welcher mir zum erfolg verhilft;-( !??

    thx 👍



  • Du solltest ja auch selber etwas rumstöbern:

    Schau dich mal hier um: Bitmap Class und Image Class



  • flenders schrieb:

    Du solltest ja auch selber etwas rumstöbern:

    Schau dich mal hier um: Bitmap Class und Image Class

    ok ok.... ich kann ja auch da mir was abschauen: ???
    http://www.c-plusplus.net/forum/viewtopic.php?t=64679
    hmm? brauch ich ja nen BITMAPINFOHEADER was ich gesehn habe...?

    thx 👍



  • Ach, mach doch, was du willst!



  • Hier mal ne ungefähre Anleitung, sind vermutlich Fehler drin - Vielleicht hilft dir das zumindest etwas....

    1. Variablen und so die deine Funktion braucht:
    GdiplusStartupInput gsi; // GDI+ Einstellungen
    ULONG_PTR gdiplusToken; // GDI+
    Bitmap *neBitmap; // Die Bitmap-Klasse ist von der Image-Klasse abgeleitet und kann daher auch speichern :D
    CLSID encoderClsid; // Die CLSID des Encoders kommt da später rein
    BITMAPINFO bi; // Hier kommen Bildinformationen rein
    char *pixels; // Hier werden die einzelnen Pixel drin gespeichert...
    
    1. Zuerst mal GDI+ initialisieren
    GdiplusStartup(&gdiplusToken, &gsi, NULL);
    
    1. Dann nen Bitmap-Objekt erzeugen:
    // Informationen über das neue Bild sammeln:
    ZeroMemory(&bi,sizeof(BITMAPINFO));
    bi.bmiHeader.biBitCount=32;
    bi.bmiHeader.biCompression=BI_RGB;
    bi.bmiHeader.biHeight=-100; // Bild ist 100 Pixel hoch
    bi.bmiHeader.biWidth=100; // Bild ist 100 Pixel breit
    bi.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
    bi.bmiHeader.biPlanes=1;
    
    // Speicher für die Pixel reservieren:
    pixels=(char*)malloc( 100*100*3 ); // Höhe*Breite*3
    
    // Hier jetzt irgendwie die Pixel setzen...
    
    // Bild mit den Pixeln in 'pixels' und den Informationen in bi erzeugen:
    neBitmap=new Bitmap(&bi,pixels);
    
    1. Encoder-ID rausfinden, um ne *.png Datei zu erzeugen (mit dem 3. Parameter der hier NULL ist, kann man z.B. bei jpegs noch angeben welche Qualität er nehmen soll oder sonstige Encoder-Einstellungen...):
    // Diese Funktion gibt es nicht!
    // Die Funktion steht in der MSDN/PSDK als Beispiel!
    // Nach 'Retrieving the Class Identifier for an Encoder' in der MSDN oder PSDK-Doku suchen!
    GetEncoderClsid(L"image/png", &encoderClsid);
    
    1. Bild speichern:
    neBitmap->Save(L"beispiel.png",&encoderClsid,NULL);
    
    1. Aufräumen:
    // Pixelspeicher freigeben:
    free(pixels);
    
    // Bitmap-Objekt freigeben:
    delete neBitmap;
    
    // GDI+ freigeben:
    GdiplusShutdown(gdiplusToken);
    


  • Hallo,

    mich hat dieses thema auch schon immer interessiert!
    Soweit klappt ja alles ganz gut, nur wie mache ich das??

    // Hier jetzt irgendwie die Pixel setzen...

    mfG MisterX


Anmelden zum Antworten