Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299

    [C++] BitBlt copia quel che non deve?

    Stavo tentando, in VC++ .NET 2003, il contenuto di una System::Windows::Forms::PictureBox (pBox1) in un'altra (pBox2) usando la funzione API BitBlt. Ecco il codice che ho usato:

    codice:
    Graphics *gSorg = pBox1->CreateGraphics();
    Graphics *gDest = pBox2->CreateGraphics();
    //reperisce gli HDC necessari per BitBlt
    HDC dc1 = (HDC)gSorg->GetHdc().ToPointer();
    HDC dc2 = (HDC)gDest->GetHdc().ToPointer();
    //fa la copia
    BitBlt(dc2, 0, 0, pBox1->Width, pBox1->Height, dc1, 0, 0, SRCCOPY);
    gSorg->ReleaseHdc(dc1);
    gDest->ReleaseHdc(dc2);
    Il risultato, abbastanza assurdo, è che il contenuto di pBox1 viene copiato... assieme a quello che la copre! Se, ad esempio, sovrappongo in parte un pulsante a pBox1, in pBox2 apparirà anche la parte del pulsante sovrapposta.

  2. #2

    Re: [C++] BitBlt copia quel che non deve?

    Originariamente inviato da newbie
    ...
    Il risultato, abbastanza assurdo, è che il contenuto di pBox1 viene copiato... assieme a quello che la copre! Se, ad esempio, sovrappongo in parte un pulsante a pBox1, in pBox2 apparirà anche la parte del pulsante sovrapposta.
    Si me lo faceva anche a me, con il builder... :master:
    Purtroppo credo non ci siano soluzioni.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299
    Praticamente il mio problema sarebbe copiare il contenuto di una PictureBox in una HBITMAP, e tentavo di farlo così:
    - ottenerne il Graphics, ed estrarne un HDC
    - creare una System:: Drawing::Bitmap vuota, con le stesse dimensioni del Graphics
    - creare un altro Graphics collegato alla Bitmap (in modo che ciò che è disegnato sul Graphics vada nella Bitmap) ed ottenerne l'HDC
    - con BitBlt , copiare i dati da un HDC all'altro, quindi da un Graphics all'altro, quindi dalla PictureBox alla Bitmap
    - ricavare dalla Bitmap il suo HBITMAP
    - e il gioco è fatto...

    Tutto questo per registrare un fielato AVI contenente tutto cio che appare nella PictureBox... il problema è che la libreria che uso per farlo accetta solo frame in formato HBITMAP
    Esiste un altro modo per farlo in VS.NET 2003?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.