Desktop Screenshot in BMP



  • Kann mir bitte jemand von euch sagen, wie ich den ganzen
    Desktop in ein Bitmap schreibe ?

    Die Funktion DC2Bitmap ist ja bekannt und funktioniert auch.
    Nur ich bin zu doof den ganzen Screen da rein zu packen 😃

    Ich erwische immer nur einen Teil der links vom Bild dann
    abgeschnitten ist und ich peile nicht warum das so ist !

    CBitmap bitmap;   
        bitmap.CreateBitmap( 100, 900, 1,24, NULL );   
        CDC MemDC;   
        CDC* pDC = GetDC();   
        MemDC.CreateCompatibleDC( pDC );   
        MemDC.SelectObject(bitmap);   
        MemDC.MoveTo(10,100); // x und y Koordinaten oder ??
        MemDC.LineTo(10,100); //dito x,y ?? wozu ist dann BitBlt ??
        pDC->SelectObject(bitmap); 
        pDC->BitBlt(0,0,900,100, &MemDC, 0,0, SRCCOPY); 
    
        DC2Bitmap(pDC->m_hDC,1024,768,"c:\\testbild.bmp"); //ok is klar Größe der ganzen Bilddatei angeben
    

    Wäre toll wenn mir den Code mal jemand etwas erklären könnte 👍
    Ich hab mich mit den x,y Koordinaten nur mal so versucht an irgendeinem
    Punkt vom Desktop zu orientieren um das System zu checken.... 🙄



  • Scottysh schrieb:

    CBitmap bitmap;   
        bitmap.CreateBitmap( 100, 900, 1,24, NULL );   
        CDC MemDC;   
        CDC* pDC = GetDC();   
        MemDC.CreateCompatibleDC( pDC );   
        MemDC.SelectObject(bitmap);
    

    Du erstellst ein Bitmap mit der Breite von 100 Pixeln, und 900 Pixeln Höhe.
    Das verbindest du richtigerweise mit einem MemoryDC.

    MemDC.MoveTo(10,100); // x und y Koordinaten oder ??
    MemDC.LineTo(10,100); //dito x,y ?? wozu ist dann BitBlt ??
    

    Du setzt die Stiftposition auf die Coordinate 10,100 und zeichnest von dort ausgehen bis zur Position 10,100 eine Linie.
    Wenn es das ist, was du willst...

    pDC->SelectObject(bitmap); 
    pDC->BitBlt(0,0,900,100, &MemDC, 0,0, SRCCOPY);
    

    Hier scheint auch einiges nicht zu stimmen.
    Du blittest einen Bereich der Breite 900 und Höhe 100 von dem Context, das dein Bitmap enthält in einen FensterDC, dass dein Bitmap auch bereits enthält?

    Vielleicht solltest du dir mal zu jeder Funktion die MSDN Docu durchlesen um zu verstehen, was sie tut und viel wichtiger, welche Parameter man in welcher Reihenfolge übergibt.



  • char *filename="c:\\beispiel.bmp"; 
    HDC hdc=::GetDC(NULL); 
    DC2Bitmap(hdc, 1024, 768, filename);
    

    And you are done....


Anmelden zum Antworten