Salut !
Je ne sais pas si les versions ult�rieures � BCB3 ont pr�vu ce type de manipulation ?
Par contre, il existe une possibilit� en s'appuyant sur la m�thode GetFormImage qui permet
de r�cup�rer le bitmap image d'une form (zone client, sans la barre de titre et sans la barre
de menus (peut-�tre pas avec les versions ult�rieures ???)).
A partir de l� �a peut devenir tr�s compliqu� mais � la base, l'id�e est de copier ce bitmap
dans un autre bitmap, pixel par pixel en appliquant une rotation (ici cette rotation est simple):
On admet que Form2 va devenir l'inverse de Form1 :
On aura d�clar� dans Unit1.cpp (Form1) :
1 2
| Graphics::TBitmap *Image = new Graphics::TBitmap;
Graphics::TBitmap *Temp; |
Au moment de visualisualisation (chez moi, c'est trop long pour l'id�e que je me fais
du "Temps r�el") :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Form2->SetBounds(Left, Top, ClientWidth, ClientHeight);
Image->Width = ClientWidth;
Image->Height = ClientHeight;
Temp = GetFormImage();
int we = ClientWidth-1;
int he = ClientHeight-1;
for(int y = 0; y < Height; y++)
{
for(int x = 0; x < Width; x++)
{
Image->Canvas->Pixels[x][y] = Temp->Canvas->Pixels[we-x][he-y];
}
}
delete Temp;
Form2->Show(); |
Il ne faudra pas oublier dans la OnPaint de Form2 :
En sachant que l'on aura d�clar� dans Unit2.cpp (Form2):
extern Graphics::TBitmap *Image;
La complication arrive tr�s vite s'il faut donner l'illusion que l'on travaille sur cette
form, car Form2 n'a que l'apparence graphique de Form1. Il faut dans ce cas g�rer depuis
Form2 toutes les actions de la souris afin de solliciter les �v�nementielles de Form1 �
l'emplacement suppos� des objets !!! Et s'il faut faire �cho d'un r�sultat (texte) dans ce
cas, il faut pr�voir une fonte logique... voir la fonction API : CreateFont
A noter que dans ce cas, toutes les op�rations graphiques devront se faire sur le bitmap
Image et non directement sur la form (Form2->Canvas ne donne pas d'�cho persistant
d'autant plus que la OnPaint effacera tout !!)
A plus !
Partager