IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Comment copier un Panel dans la PressePapier [Trucs & Astuces]


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Homme Profil pro
    Chercheur g�nie �lectrique
    Inscrit en
    Mai 2002
    Messages
    263
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Chercheur g�nie �lectrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Par d�faut [RESOLU]Comment copier un Panel dans la PressePapier
    J'ai un Panel comprenant des boutons et images et je voudrais copier cet ensemble dans la Clipboard (en image). Quelqu'un peut me donner un coup de main,

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de Gilles Lou�se
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par d�faut
    Je crois qu'il faut recopier � la main le contenu du TPanel dans un bitmap et faire un Assign du bitmap pour le clipboard.

    Mettez un bouton � c�t� du Panel, sur clic du bouton, on recopie le contenu du TPanel sous forme de bitmap dans le ClipBoard. Vous pouvez ensuite le coller par exemple sous Word en tant qu'image.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    int i, j , x , y , w ,h, dw, dh;
    Graphics::TBitmap* BM;
    HDC Ecran;
     
    dw=Form1->Width-Form1->ClientWidth-4;
    dh=Form1->Height-Form1->ClientHeight-4;
     
    x=Form1->Left+Panel1->Left+dw;
    y=Form1->Top+Panel1->Top+dh;
    w=Panel1->Width;
    h=Panel1->Height;
     
    Ecran = GetWindowDC(GetDesktopWindow()) ;
    BM=new Graphics::TBitmap();
    BM->Width=w;
    BM->Height=h;
     
    for(i=0;i<w;i++)
    for(j=0;j<h;j++)
    BM->Canvas->Pixels[i][j] = (TColor)GetPixel(Ecran,x+i,y+j);
     
    Clipboard()->Assign(BM);
    delete BM;
    }
    Il y a un petit r�glage � faire. Si on recopie la forme enti�re, les coordonn�es Form1->Left et Form1->Top sont fiables mais s'il l'on cherche les coordonn�es exactes d'un composant dans la forme, il y a un petit d�calage. Il y a d�j� une diff�rence entre Width et ClientWidth mais �a ne suffit pas, j'ai d� ajuster avec -4 pixels (dw, delta width, et idem pour height).

    � bient�t
    Gilles

  3. #3
    Membre �clair�
    Homme Profil pro
    Chercheur g�nie �lectrique
    Inscrit en
    Mai 2002
    Messages
    263
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Chercheur g�nie �lectrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Par d�faut
    Merci, �a marche !

    Je me permets de remplacer les copies Pixels par:

    BitBlt(BM->Canvas->Handle, 0, 0, w, h, GetDC(GetDesktopWindow()), x, y, SRCCOPY);

    Visiblement, �a va plus vite (je ne sais pas s'l y a des inconv�nients).

  4. #4
    Membre Expert
    Avatar de Gilles Lou�se
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par d�faut
    Oui, c'est bien plus �l�gant, je ne connaissais pas BitBlt, c'est tr�s efficace. Merci � vous pour cette information.

    � bient�t
    Gilles

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Comment copier un TGraphicField dans un TImage ?
    Par psidonio dans le forum Composants VCL
    R�ponses: 2
    Dernier message: 30/10/2005, 16h31
  2. [Syst�me] Comment copier un fichier dans le presse papier ?
    Par le y@m's dans le forum API standards et tierces
    R�ponses: 5
    Dernier message: 19/09/2005, 12h03
  3. R�ponses: 4
    Dernier message: 17/06/2005, 10h09
  4. Comment Copier une table dans un fichier?
    Par thx2003 dans le forum Requ�tes
    R�ponses: 2
    Dernier message: 15/12/2003, 12h09
  5. Comment copier une image dans le presse papier.
    Par cprogil dans le forum Langage
    R�ponses: 7
    Dernier message: 09/09/2003, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo