cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 2009
-
18 mai 2006 à 10:10
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 2009
-
23 mai 2006 à 09:56
bonjour!
j'ai un petit problème génant que je n'arrive pas a résoudre...
je voudrais afficher une image dans la form principal de mon application MDI. J'ai utiliser un TImage avec Align=alClient. ça marche bien.
Mais quand je redimensionne la fenêtre, l'image de fond n'arrête pas de scintiller.
Quelqu'un a une idée? Comment je pourrais éviter ça?
merci,
Loda
PS:
c'est un grand jpeg avec un fond uni et un logo au milieu.
j'ai essayer de mettre align=alNone et une grande taille. idem
j'ai essayer de mettre center=true et une image plus petit, idem.
procedure TForm1.FormPaint(Sender: TObject);
var BMP : TBitmap;
begin
{ on utilise un buffer bitmap pour dessiner avant de transmettre
le dessin sur le canvas de Form1 }
BMP := TBitmap.Create;
BMP.Width := ClientWidth; {dimension de la fenetre client}
BMP.Height := ClientHeight;
BMP.PixelFormat := pf24bit;
with BMP.Canvas do begin
Brush.Color := clblack; {le fond correspond au fond du logo}
FillRect(ClientRect);
if Assigned(GNDIMG) then {si l'image de fond existe}
Draw( (Width div 2) - (GNDIMG.Width div 2), {on centre}
(height div 2) - (GNDIMG.Height div 2), {idem}
GNDIMG);
end;
Canvas.Draw(0,0,BMP); {on dessine sur la fiche}
BMP.Free; {on libere le buffer}
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if Assigned(GNDIMG) then GNDIMG.Free; {si GNDIMG est créé on le libere}
end;
procedure TForm1.FormResize(Sender: TObject);
begin
FormPaint(Sender); {quand on redimensionne on appel Paint}
end;
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 22 mai 2006 à 09:15
je pensais le faire dans OnCreate,
a priori, je ne vois pas l'interêt d'allouer/desallouer le buffer a chaque fois. (vu que le code ne devrait pas être concurent)
De plus, mon problème vient aussi de code executé lors du resize qui ralentise l'affichage. alors si je peux eviter des alloc...
a moins que je me plante bien sur ;-) je vous dirais quand j'aurais essayer.
A+
Loda
PS: OnMagicEvent, c'est celui qui se déclanche toujours juste quand on en a besoin, c'est ça ?