Copier une image dans le fond d'un TPanel

Résolu
Signaler
Messages postés
137
Date d'inscription
dimanche 7 juillet 2002
Statut
Membre
Dernière intervention
11 janvier 2009
-
Messages postés
137
Date d'inscription
dimanche 7 juillet 2002
Statut
Membre
Dernière intervention
11 janvier 2009
-
Bonjour,

J'aimerais savoir comment copier une image dans le fond d'un TPanel.
Si quelqu'un a une idée...

Merci

Orélien.

15 réponses

Messages postés
3827
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
16 décembre 2021
46
Salut,
> jlen, pour information c'est possible

voici comment :
procedure TForm1.Button1Click(Sender: TObject);
Var DC : HDC;
aBmp : TBitMap;
Canv : TCanvas;
begin
aBmp := TBitMap.Create;
aBmp.LoadFromFile('Cloud.bmp'); // doit être un BMP
DC := GetDc(Panel1.Handle); // comme il n'y a pas de canvas(accessible) dans panel on récupère son Device Control
Canv := TCanvas.Create;
Canv.Handle := DC; // on l'affecte à notre Canvas temporaire
Canv.Brush.Bitmap := aBmp; // et l'image (BMP) à Brush
FillRect(dc, Panel1.ClientRect, Canv.Brush.handle); // On Dessine
Canv.Free; // et on libère le tout avant de quitter
aBmp.free;
ReleaseDc(Panel1.Handle, DC);
end;

Voilà c'est tout
si tu mets cela dans l'évenement OnPaint de ta Form le rafraichissement se ferat automatiquement



@+
Cirec
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
salut,

je pense que le plus simple est de mettre un Timage dans ton panel et
de le charger la propriété piture avec une image (soit à la conception
soit avec un loadfromfile)



@+

jlen
Messages postés
137
Date d'inscription
dimanche 7 juillet 2002
Statut
Membre
Dernière intervention
11 janvier 2009

Merci,

Et bien en ait ce n'est pas exactement ce que je recherche. J'y ait bien pensé mais ce que j'aimerais c'est que l'image soie fondue avec le TPanel, qu'elle ne fasse qu'un avec lui, qu'elle soie incrustée quoi.

Orélien.
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
je ne crois pas que ce soit possible directement sans recréer un
nouveau composant qui reprendrait les propriétés du Timage
et du Tpanel ( ajout d'une propriété Tpicture dans un composant Tpanel).



@+

jlen
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
-->cirec intéressant à savoir; je ne connaissais pas.

bien que personnellement je préfère rajouter un Timage au panel pour
une gestion plus simple de l'image associée qui permet en plus de
charger des images jpeg



@+

jlen
Messages postés
3827
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
16 décembre 2021
46
Absolument, quoi que l'on peut aussi charger un Jpg avec un TImage Crée dynamiquement et l'assigner à un BitMap mais bon ... c'est plus compliqué mais pas impossible.

Le but ici était de montrer la possibilité de dessiner même en l'absence de canvas en plus je sais pas si tu as vu mais le Bmp est directement affecté à Brush et non dessiné avec Draw (ce qu'il est aussi possible de faire) où avec StretchDraw



@+
Cirec
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
oui puisque le Tpicture le fait il est donc possible de le faire!

donc dans le même ordre d'idée il est possible d'intégrer une image
dans n'importe contrôle c'est une question qui est récurente sur
le forum.

Il serait intéressant que tu fasses un tuto sur la question.



@+

jlen
Messages postés
3827
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
16 décembre 2021
46
Tout à fait, on peut dessiner partout.
mais je ne sais pas si il y a asser de matière à faire un tuto sur le sujet, le code donné en exemple plus haut est à lui seul 95 % de la méthode. Pour les autres composants il faut juste remplacer Panel1.Handle par celui de notre choix.

Qu'en penses-tu ? ça vaut le coup ?



@+
Cirec
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
disons que ce serait plus facile à retrouver que sur le forum qui
limite le nombre de réponses à 20~.et pas toujours très judicieuses.

(nix serait-il possible que quand l'on consulte la liste des messages
de son compte il n'y ait qu'un seul lien par topic ce qui faciliterait
la recherche des réponses que l'on a déjà données).

j'ai expérimenté le moteur de recherche sur des réponses que j'avais
données et dont je voulais retrouver l'adresse et finalement j'ai eu
plus vite fait de réecrire le bout de code!!

Mais bon je vais mettre ça dans ma bibliothèque d'exemple

@+

jlen
Messages postés
3827
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
16 décembre 2021
46
Je vais méditer dessus, la nuit porte conseil, parait-il

Bonne nuit


@+
Cirec
Messages postés
137
Date d'inscription
dimanche 7 juillet 2002
Statut
Membre
Dernière intervention
11 janvier 2009

Merci beaucoup, c'est ce qu'il me fallait !
Merci de votre aide !

Par contre j'ai mis ce code dans l'évènement onPaint de la form mais rien ne se passe...

Orélien.
Messages postés
137
Date d'inscription
dimanche 7 juillet 2002
Statut
Membre
Dernière intervention
11 janvier 2009

Egalemenent j'ai souci, c'est que losque mon image est dessinnée et qu'une autre fenêtre de windows se postionne par dessus, l'image s'efface. Quelquun à t'il une solution ?
Merci.

Orélien.
Messages postés
449
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
8 avril 2009
2
Euh, utiliser un BmpPanel ou un CnvPanel du pack de compo de Mauricio ?

gnh !
Messages postés
3827
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
16 décembre 2021
46
Salut,
--> DeltaFX ça y est tu es accro aux compos de Mauricio. lol

ceci dit c'est vrai qu'ils sont chouettes.



@+
Cirec
Messages postés
137
Date d'inscription
dimanche 7 juillet 2002
Statut
Membre
Dernière intervention
11 janvier 2009

Bonjour,

N'existe t'il pas une autre solution pour que le TPanel dessiné ne s'éfface pas, losqu'une autre fenêtre prend le focus par dessus ?

Merci

Orélien.