Bonjour
je cherche avec Bcpp4 (vieux ...) � faire des calques avec des TImage superpos�s.
J'ai donc recherch� � travailler Transparent de TImage. Et les ennuis ont commenc�s.
Le code est inspir� de l'aide de Bcpp.
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
27 //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Image1->Transparent=false; Image1->Picture->Bitmap->LoadFromFile("Original1.bmp"); Image2->Transparent=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap* bmp = new Graphics::TBitmap(); if (bmp) { bmp->Transparent=true; bmp->TransparentMode=tmFixed; bmp->TransparentColor=clWhite; bmp->LoadFromFile("calque02.bmp"); //Image2->Canvas->StretchDraw(Rect(0,0,Image2->Width, Image2->Height), bmp); Form1->Canvas->Draw(0,0,bmp); delete bmp; bmp=NULL; } }
Dans une Form1, j'ai plac� un bouton et deux TImage l'un sur l'autre. Image1 contient une image bmp "de base" et Image2 devrait recevoir une image d'un calque dont la couleur de fond est "transparente" � Image2 ... Image2 a sa propri�t� Transparent=true;
Bien entendu ... �� ne marche pas !
Pour tester j'ai plac� deux lignes que je place alternativement en commentaire. Quand la ligne Form1->Canvas->Draw(0,0,bmp); est active, la transparence du bmp marche seulement sur le bouton Button1 qui se trouve sous le bmp trac�, mais pas Image1 qui est masqu�e. Quand la ligne Image2->Canvas->StretchDraw(Rect(0,0,Image2->Width, Image2->Height), bmp); est activ�e : bien entendu, on ne voit pas plus Image1.
Quelqu'un saurait il afficher proprement une image transparente en bitmap au-dessus d'une autre image sans passer par le "truc" du canal alpha par exemple des png ?
Je remarque que la propri�t� Transparent est document�e sur TImage et jamais sur TGraphics ou TBitmap. Pourtant, l'aide indique bien que Transparent est aussi un membre de TBitmap .... et le compilateur l'accepte. serait-ce l'indice d'un d�faut ?
Il y a plusieurs discussions sur ce th�me. Sur Delphi, les gens pr�tendent que la transparence entre deux TImage �� passe sans probl�me. Quelqu'un a t'il une id�e sur Bcpp ?
Partager