begin process at 2010 03 22 14:22:58
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > BUG TIMAGE AVEC DELPHI 6 : SCINTILLEMENT

BUG TIMAGE AVEC DELPHI 6 : SCINTILLEMENT


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :timage, scintille, bug Niveau :Initié Date de création :05/07/2002 Date de mise à jour :29/11/2005 20:11:19 Vu / téléchargé :4 157 / 233

Auteur : leyeti

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Dans delphi 6, il apparait un bug dans la gestion des Timage. Le Timage fait un refresh beaucoup trop souvent, ce qui donne une impression de scintillement (par exemple lorsqu'on fait une sélection dans l'image...)
Précision : ce bug n'existe pas dans delphi 5.

La Solution : Corriger la VCL de delphi 6 : ( Correction donnée par George Pistikos )
--------------
Corriger '\Delphi6\Source\Vcl\ExtCtrls.pas' de cette façon
(Article de Georges Pistikos traduit en français)

Voici le listing de 'TImage.PictureChanged' dans la vcl de delphi 6  (Delphi6\Source\Vcl\ExtCtrls.pas)


procedure TImage.PictureChanged(Sender: TObject);
var
  G: TGraphic;
begin
  if AutoSize and (Picture.Width > 0) and (Picture.Height > 0) then
SetBounds(Left, Top, Picture.Width, Picture.Height);
  G := Picture.Graphic;
  if G <> nil then
  begin
if not ((G is TMetaFile) or (G is TIcon)) then
   G.Transparent := FTransparent;


if (not G.Transparent) and Stretch and not Proportional then    // changer cette ligne de code !!!


   ControlStyle := ControlStyle + [csOpaque]
else  // picture might not cover entire clientrect
   ControlStyle := ControlStyle - [csOpaque];
if DoPaletteChange and FDrawing then Update;
  end
  else ControlStyle := ControlStyle - [csOpaque];
  if not FDrawing then Invalidate;
end;



La condition IF doit être changée ainsi :

if (not G.Transparent) and (Stretch or  ((G.Width >= Width) and (G.Height >= Height)))  and not Proportional  then


Cela ajoute à la condition que SI le bitmap couvre la Timage alors le ControlStyle
est mis à csOpaque et donc le background n'est pas redessiné à chaque fois que l'Image change. (comprendu ?)


George Pistikos

Anadelta Software
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  

Après avoir modifié 'ExtCtrls.pas',
- renommez '\Delphi6\Lib\ExtCtrls.dcu' en 'ExtCtrls.dcu_'
- copier '\Delphi6\Source\Vcl\ExtCtrls.pas' dans le dossier '\Delphi6\Lib\'

Lorsque vous recompilerez un programme, ExtCtrls.dcu sera recréé.

Je l'ai testé : ça fonctionne parfaitement !  


 Conclusion

Correction trouvée par George Pistikos.  Merci !

----------

MAJ faite le 28/01/2003 : ajout d'une archive contenant : ExtCtrls.pas (modifié) et ExtCtrls.dcu (près à l'emploi).

Retesté : ça fonctionne parfaitement.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

29 novembre 2005 20:11:19 :
Ajout de mots clefs pour le moteur de recherche CodeS-SourceS.

 Sources de la même categorie

Source avec Zip Source avec une capture PCB DESIGN LOGICIEL DE CRÉATION DE CIRCUIT IMPRIMÉ ET ACCESS... par jfs59
Source avec Zip Source avec une capture EFFET VITRE ET THUMBNAILS SOUS VISTA par Bacterius
Source avec Zip Source avec une capture ANAGLYPHEUR OU COMMENT VOIR EN RELIEF LES STÉRÉOSCOPES ANCES... par jfs59
Source avec Zip Source avec une capture DÉFORMER UNE IMAGE AUX DIMENSIONS D'UN QUADRANGLE QUELCONQUE... par FFCAST
Source avec Zip Source avec une capture THREAD ET BITMAP (DESSIN AU CRAYON) par barbichette

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture BONNE ANNEE ! par cantador
Source avec Zip MOTEUR POUR JEU DE CUBES. par Caribensila
Source avec Zip BUG RANDOMRANGE par WhiteHippo
Source avec Zip Source avec une capture GRILLE MAGNÉTIQUE SUR TIMAGE par Slander
Source avec Zip Source avec une capture COMPOSANT TDBPFONTIMAGE : UNE IMAGE DE TEXTE A PARTIR D'UNE ... par JulioDelphi

Commentaires et avis

Commentaire de dindenoel le 17/09/2002 17:22:09

Salut leyeti ! dis moi, saurais-tu imprimer un bitmap dans des proportions differentes que celle de l'image ?

Merci, Dindenoel !

Commentaire de sebastienbro le 21/01/2003 18:14:08

arf, c cool ça, mé le probleme, c ke g delphi6 personnel, et ke g po les sources ! tu pourrai po m 'envoyer le fichier DCU créé stp ?
voila mon mail : sebastienbro@aol.com
Merci d'avance !

Commentaire de Zeroc00l le 28/06/2004 20:48:41

Hum ...
Kkun aurait-il un composant équivalent au TImage classique MAIS avec un raffraichissement manuel... Autrement dit avec lequel on serait obligé de se taper tout les Repaint !

P'tête qu'en me les tapant tous je passerais à 10 % d'utilisation du processeur au lieu des 100% actuel.
Je raffraichit à une fréquence assez importante (ca peut aller jusqu'a 1000 fois par seconde dans le pire des cas )

Etant donné que je dessine pixel par pixel et que le composant veut remettre à jour le canvas immédiatement après que ce dernier ait changé ...
En gros si je dessine un trait de 100 pixels il raffraichit 100 fois avec tout ce que ca inclut derriere (Buffer , copie de bitmap...)
D'ou mon interêt pour un composant "personalisé"...
L'utilisateur n'a pas besoin de voir chaque point apparaitre (le PC pense que Si !)
Moi je ne ferai qu'un Repaint par exemple ...

Voili Voilou ...
J'espère que ce message ne contribuera pas qu'a encombrer ce site... (Traduction : J'espère une réponse)

Commentaire de Zeroc00l le 28/06/2004 20:52:49

A la limite en me servant de ce que tu explique ici ...
Je pourrais faire comme si mon TImage était le composant que je cherche, càd gérer moi même les raffraichissements...

Et puis au moment de la compilation je vais trafiquer 'ExtCtrls.pas'...
Histoire que la condition qu'il test soit forcément fausse ...
Vive les manip's !   :)

Commentaire de Zeroc00l le 29/06/2004 15:10:53

C'est fait ! TOUT sur la façon de procéder :

http://www.delphifr.com/code.aspx?ID=24123

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Nix, y a un bug dans le forum.² [ par DelphiCool ] SalutLe Tag [URL] dans le forum ne marche paslookwww.progzed.com Création dynamique de composant [ par Amadeus ] Comment créer dynamique des contrôle TImage ?Je voudrais créer sur une Form autant de TImage que d'image se trouvant dans un répertoire donné. Comment Un bug dans Delphi 6 ? [ par Kane ] Je viens d'ecrire le code suivant sous delphi 6 pro et j'obtient un drole de resultat ! Avant que la feuille devienne progressivement transparente ell Timage Help me [ par g0belin ] Ben voila j'aimerai faire un trucs qui utilise un bout de code dans le genre:--------------CODE---------------------image1.picture := {adresse de l'im Problème avec les images et leur fond [ par fab30 ] Salut a tous, voilà, j'ai un probleme avec le Timage de Delphi : Sur ma forme, il y a un Timage avec une image de fond en bmp. Dessus, je rajoute un T bug sur mon ordi et pas sur les autres [ par choup ] Je n'arrive pas à tout saisir, suite à mon message "pas d'enregistrement maitre" j'ai repris les sources initiales, sans mes modifs, cette source marc Webmaster, y a un bug sur le moteur de recherche [ par Seb_d_angers ] En lancant une recherche on obtient la liste des source et message qui se rapporte aux mots clés mais il y a un bug, le lien qui pointe vers les messa Comment déplacer un composant TImage avec la souris lors de l'éxecution de l'application???? [ par MasterNKZ ] Comment déplacer un composant TImage avec la souris lors de l'éxecution de l'application????J'ai une source pour déplacer un composant avec la souris, TImage problème [ par MasterNKZ ] Je veux faire une animation tres simple:j'ai une image dans un composant TImage et je la déplace a l'aide d'un timer 4 pixel par 4pixel tout les 70ms Image avec ComboBoxEx [ par florenceb91 ] Bonjour,voilà, j'ai un ComboBoxEx qui me liste les images contenu dans une TImageList, et à chaque sélection d'image dans mon comboboxEx je souhaitera


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales