screenshot



  • Am aller einfachsten (aber evtl. nicht am schnellsten - k.A.) ist folgendes:
    "// Hier jetzt irgendwie die Pixel setzen..." <= Einfach weglassen und das Bitmap-Objekt erstellen, dann sind erstmal irgendwelche zufälligen Pixelfarben da...
    Das Bitmap-Objekt hat nämlich ne Methode "SetPixel", womit man sehr einfach Pixel setzen kann, nachdem man das Bitmap-Objekt erzeugt hat:

    neBitmap->SetPixel(x,y,RGB(255,0,0)); // roten Pixel bei P(x/y) setzen.
    


  • also so:

    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 
    
        pBitmap->SetPixel(x,y,RGB(255,0,0)); // roten Pixel bei P(x/y) setzen.
    
        delete pBitmap; 
    
        return 1;
    }
    

    was sagst du zu dem geeky?
    thx 👍



  • hi geeky...weißt du was mir an deinem code bissi sorgen macht, das:
    bi.bmiHeader.biCompression=BI_RGB;
    ich will das ja kompremiert speichern.....da geht das nicht mit biCompresssion, da man da mit der hand kompremieren muss...ich würds aber gerne automatisch machen ohne viel aufwand!

    thx geeky 👍



  • Bitmap::Bitmap(WCHAR* filename ,BOOL useIcm)
    // Creates a Bitmap object based on an image file.

    Das bedeutet, dass Du ein Bitmap-Objekt im Speicher erzeugst!
    Und zwar wird das Bitmap-Objekt im Speicher genauso aussehen wie das Bild, dass unter dem Dateinamen <filename> SCHON EXISTIERT!
    Der Quellcode speichert also gar nichts!

    bi.bmiHeader.biCompression=BI_RGB;
    Damit gebe ich nur an in welchem Format die Daten im Speicher vorliegen - nicht wie die Bilddaten gespeichert werden!
    Das speichern geschieht mit neBitmap->Save(..);

    Evtl. sollte du hier alles nochmal ganz in Ruhe durchlesen und nochmal in der MSDN/PSDK bei "Bitmap" und "Image" ein bisschen rumlesen sowie nochmal ein wenig in einem C++ Tutorial/Buch lesen...



  • geeky schrieb:

    Bitmap::Bitmap(WCHAR* filename ,BOOL useIcm)
    // Creates a Bitmap object based on an image file.

    Das bedeutet, dass Du ein Bitmap-Objekt im Speicher erzeugst!
    Und zwar wird das Bitmap-Objekt im Speicher genauso aussehen wie das Bild, dass unter dem Dateinamen <filename> SCHON EXISTIERT!
    Der Quellcode speichert also gar nichts!

    bi.bmiHeader.biCompression=BI_RGB;
    Damit gebe ich nur an in welchem Format die Daten im Speicher vorliegen - nicht wie die Bilddaten gespeichert werden!
    Das speichern geschieht mit neBitmap->Save(..);

    Evtl. sollte du hier alles nochmal ganz in Ruhe durchlesen und nochmal in der MSDN/PSDK bei "Bitmap" und "Image" ein bisschen rumlesen sowie nochmal ein wenig in einem C++ Tutorial/Buch lesen...

    hi, ja das problem was ich habe ich das kompremierte speichern, mit dem komm ich nicht ganz zurecht!;-( bi.bmiHeader.biCompression=BI_RGB; das dann speichern schaff ich auch.....aber kompremiert speichern nicht;-( 😕

    thx 👍



  • geeky schrieb:

    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);
    

    Hat das nicht geklappt? Was für Fehler bekommst du?



  • nö net ganz....weil wie bekomm ich da die HDC hdc information rein???
    werd morgn das ganze weiter machen....also heute mittag;-)

    thx 👍



  • // 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);
    

    ich bekomm da nen fehler:
    screen.cpp(191) : error C2065: 'GetEncoderClsid' : nichtdeklarierter Bezeichner

    is auch irgendwie klar....die funktion gibs es nicht...aber was soll man da machen?

    thx 👍



  • Das was ich in dem Kommentar dahin geschrieben hab:

    Nach 'Retrieving the Class Identifier for an Encoder' in der MSDN oder PSDK-Doku suchen!



  • geeky schrieb:

    Das was ich in dem Kommentar dahin geschrieben hab:

    Nach 'Retrieving the Class Identifier for an Encoder' in der MSDN oder PSDK-Doku suchen!

    jaja, ich hab ja keine psdk-doku runtergeladn;-(

    thx 👍




Anmelden zum Antworten