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
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
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.
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).
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; }
� bient�t
Gilles
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).
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
Partager