Accueil > > > EFFET D'EAU AVEC GETDIBITS ET SETDIBITS
EFFET D'EAU AVEC GETDIBITS ET SETDIBITS
Information sur la source
Description
Voilà un petit exemple des deux fonctions GetDiBits etSetDiBits qui permettent de transferer une série de bits de la mémoire à une image (tbitmap, timage,...) dans l'exemple, on applique un effet d'eau sur une image de fond. On peut par ailleurs déplacer les cailloux qui sont sous l'eau. On vois donc la rapidité et la simplicité par rapport à scanline ou encore Pixels[] Sinon, juste pour info, la bouton Tsunami, qui déclache une grosse vague ne marche pas toujours... Je n'ai pas cherché à savoir pourquoi puisque le reste marche bien... alors, si quelq'un a une solution, à bonne entendeur salut...
Conclusion
Alors, ce code propose un exemple d'utilisation de deux fonctions, Getdibits et Setdibits. Pour l'effet d'eau, j'ai trouvé ça sur internet.
En gros, le principe tient en quelques points 1 - ne travailler que sur des valeurs en mémoire (tableaux) et n'afficher le résultat qu'une fois le traitement terminé. 2 - pour une rapidité d'affichage, transfert de l'image finale par setdibits, qui envoie d'un seul coup tous les octets de l'image. Donc, bien plus rapide qu'un scanline[n] ou encore un pixels[x,y] 3 - Donc, on charge les images et on transfert les octets de pixels vers une zone mémoire préalablement affecté (via getdibits). Une seule fois lors de la création de la fiche. Puis traitement direct en mémoire et affichage à chaque itération en transférant via setdibits
Pour l'effet en lui même, vous trouverez sûrement sur Internet des tas d'info dessus mais je vais résumer : 1 – On a un buffer qui contient l'élévation de l'eau à l'instant T et T-1. A chaque itération, on applique un effet dessus. On fait une moyenne des élévations des 8 cases autour d’un point au temps T et on retranche l’élévation au temps T-1 de cette même case. L’élévation ainsi calculée donnera la valeur à T+1. Pour créer une vague, il suffit ) un instant donné, de mettre une forte élévation en un point et l’effet sur le buffer va se charger de propager l’onde.
2 – dessin avec une texture de fond : Pour chaque point de l’image (x,y), on calcule la déviation du à une vague en calculant la pente à cette endroit. Donc dx=buffer[x,y]- buffer[x+1,y] et dy=buffer[x,y]- buffer[x,y+1] On placera comme couleur de pixel à l’endroit (x,y) le pixel de l’image originale (x+dx,y+dy)
Enfin, pour trouver les contours d’un caillou, je parcours le dessin de caillou et je repère les points qui sont dans le caillou et où un des quatre points adjacents sont en dehors.
Historique
- 25 avril 2007 21:00:58 :
- contour des pierres dans l'eau lors du déplacement
et libération de la mémoire pour ce qui ne sert plus
- 26 avril 2007 15:13:17 :
- - rajout d'une petite explication
- correction de quelques Bugs sur l'affichage (onde autour des cailloux à l'opposé sur l'écran)
- séparation et reduction du buffer de vague (de integer vers smallint => 2 fois moins de place)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Image de fond dans un TreeView [ par Valérie ]
Bonjour, J'utilise une application DELPHI6 CLX et je n'aarive pas à avoir une image de fond dans mon TreeView. L'événement OnPaint n'existe pas. Si
image du bureau a intervalle regulier [ par tarik ]
salut je voudrais faire des sauvegardes de l'etat du bureau (une sorte d'imprime ecran) a intervalle regulier
image ds un richedit [ par sebrs1 ]
comment inserer une image ds un richedit?
tbitbtn avec image format jpeg [ par vib ]
existe il un composant ou une solution pour avoir un bouton du genre bitbtn avec une image au format jpeg ?A+
Image dans une TStatusBar !!! [ par MAsterC ]
Comment fait-on pour mettre un Tprogresbar et un petit dessin dans l'item TStatusBar ????POUR PLUS DE DÉTAILS ALLER VOIR DANS INTERNET EXPLORER EN BAS
Sacré Mikey, c jamais ou il est! :: Prob localisation souris [ par Gysmo ]
Salut a tous!Voila j'ai creer sur mon prog des bontons avec des TImage superposé. Kan on click ca change d'image, une image bouton normal, une image b
Texte sur une image [ par Gysmo ]
Comment arrivé à écrir du texte sur une image puis la sauvegarder comme tel??!Merci
Imprimer une image et un texte sur la même feuille [ par zeusnul ]
Bonjour,J'aimerais pouvoir imprimer une image et un texte sur la même feuille, mais je suis dans l'incapacité de trouver ça dans l'aide de delphi. Je
ImageList ... Help ! ;-) [ par HEproduct ]
Bonjour, je voudrai stocker des images de trés petites tailles dans une image lit et récupérer les noms dans une list box. Après quoi l'utilisateur en
Image [ par sebastienbro ]
Comment faire pour effacer le contenu d'une image ?
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|