[C++Builder] Animation graphique

Animation graphique [C++Builder] - Programmation

Marsh Posté le 25-03-2002 à 14:40:07    

g besoin de faire s'animer un objet dans une fiche C++Builder. Pou se faire, j'utilise 10 images du même objet dans ses différentes positions d'animation. Le pb, c ke lorsk je demande d'enchainer les images en les rendant visibles les 1 apres les autres, C++Builder execute tout le code, et graphiquement on voit la 1ere image, puis directement la derniere... Si je lui demande de faire une pause (Sleep()) entre chak image, il affiche la 1ere image, puis execute toutes les pauses d'1 coup et enfin affiche la derniere image. Ma question: comment animer de façon fluide cet ensemble de 10 images sans faire des Refresh() pas bo du tout...?
 
MERCI D'AVANCE...

Reply

Marsh Posté le 25-03-2002 à 14:40:07   

Reply

Marsh Posté le 25-03-2002 à 15:52:42    

Essaie en mettant tes 10 images dans un .avi (non compressé, ou compressé en RLE, en peu de couleurs) et utilise le TAnimate (palette Win32 je crois)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 25-03-2002 à 16:11:29    

Non, en fait il faut mettre entre chaque image la ligne :
Application->ProcessMessages();
C'est une fonction qui dit à Windows de laisser passer tous les messages qui sont envoyés y compris ceux de l'affichage.

Reply

Marsh Posté le 25-03-2002 à 16:20:08    

Oui, mais il cherchait une solution plus élégante que le Refrech(). Application->ProcessMessages() c'est encore plus lourd que Refresh().
Le TAnimate est quand même plus léger pour ce genre de choses je pense...

 

[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 25-03-2002 à 17:50:36    

sauf ke l'AVI c tres tres lourd...!

Reply

Marsh Posté le 25-03-2002 à 18:03:00    

Un avi en RLE palettisé c'est pas beaucoup plus lourd qu'un gif en LZH palettisé...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 25-03-2002 à 18:05:53    

ok, seulement je ne c pas à quel output format ca correspond dans 3DS... Ca veut dire koi RLE...?

 

[jfdsdjhfuetppo]--Message édité par LKoLRn--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 25-03-2002 à 20:17:49    

Un genre de GIF/ZIP simplifié.
C'est utilisé pour les BMP en 2, 16 & 256 couleurs.
À la limite tu le sauve en AVI non compressé, puis avec un soft genre Jasc Animation Shop tu réduis à 256 couleurs et tu encodes en RLE.
Mais vu que Animation Shop se base sur les codecs Windows tu devrais pouvoir faire de même:
http://ibelgique.ifrance.com/antp/_images/animshop_avi_rle.png

 

[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 27-03-2002 à 09:51:20    

bon, g essayé d'utiliser ta méthode, seulement c ka mem tres lourd, cad ke la video prend bcp de place dans les sources du projet... En +, la limite des 256 couleurs est trop faible, cad k'on voit bien la différence avec le reste des graphismes (ki sont en 24 bits)...
 
Donc le pb reste entier...!

Reply

Marsh Posté le 27-03-2002 à 09:54:37    

Ha :/
Bhen donc du GIF animé ça ira pas mieux, vu que c'est aussi en 256 couleurs.
Tu peux toujours essayer du AVI compressé avec un autre codec, mais si c'est une compression avec perte ça ne donnera peut-être pas bien...
Reste le MNG (PNG animé), mais pour trouver un composant l'acceptant c'est une autre histoire, je ne suis pas sûr que ça existe...
Donc la solution des images alternées est la plus simple. Et à part un Refresh à chaque changement d'image je ne sais pas s'il y a une solution simple.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 27-03-2002 à 09:54:37   

Reply

Marsh Posté le 27-03-2002 à 12:26:27    

antp a écrit a écrit :

Ha :/
Bhen donc du GIF animé ça ira pas mieux, vu que c'est aussi en 256 couleurs.
Tu peux toujours essayer du AVI compressé avec un autre codec, mais si c'est une compression avec perte ça ne donnera peut-être pas bien...
Reste le MNG (PNG animé), mais pour trouver un composant l'acceptant c'est une autre histoire, je ne suis pas sûr que ça existe...
Donc la solution des images alternées est la plus simple. Et à part un Refresh à chaque changement d'image je ne sais pas s'il y a une solution simple.  




 
Tout à fait d'accord... Mais bon, j'ai passé des heures et des heures à trouver un moyen d'optimiser l'animation sous Windows et il s'est avéré que finalement il est plus sage d'utiliser DirectX. Builder le gère très bien en ce qui concerne les fonction basiques


---------------
...m'enfin !!!
Reply

Marsh Posté le 27-03-2002 à 13:59:29    

si c'est juste pour faire tourner une animation de 10 images directx est vraiment une solution "bourrin" c'est comme écraser une mouche avec un marteau  :D  
 
commence par essayer les dizaines de composants tout fait pour les anims de bitmap cela me semble une solution plus rationnelle

Reply

Marsh Posté le 27-03-2002 à 14:56:31    

C'est vrai, j'y ai même pas pensé, y a des compos qui font des anims avec des séquences de bmp :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 27-03-2002 à 16:29:23    

Ya 1 composant TImageList, mais c koi les 10aines d'autres...?

Reply

Marsh Posté le 27-03-2002 à 16:37:16    

TImageList c'est pour stocker des images, pour les menus, listivew, actionlist, toolbar, etc...
Y a sûrement des compos pour afficher successivement toutes les images d'une TImageList.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 27-03-2002 à 16:38:48    

http://www.torry.net/animated.htm
Y en a des qui sont "FWS", Freeware with source, vaut mieux prendre ceux-là.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed