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
TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion
Forum
RE : SAVEDIALOGRE : SAVEDIALOG par JulioDelphi
Cliquez pour lire la suite par JulioDelphi
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|