Animation graphique [C++Builder] - Programmation
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)
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.
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]
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é...
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]
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:
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
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...!
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.
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
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
commence par essayer les dizaines de composants tout fait pour les anims de bitmap cela me semble une solution plus rationnelle
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
Marsh Posté le 27-03-2002 à 16:29:23
Ya 1 composant TImageList, mais c koi les 10aines d'autres...?
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.
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à.
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...