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
PARUTION DE MON LIVRE SUR WPF 4PARUTION DE MON LIVRE SUR WPF 4 par odewit
La 2e édition de mon livre sur WPF sort aujourd'hui en version numérique et lundi en version papier :-)
L'ouvrage présente de façon approfondie les fonctionnalités de WPF 4 : graphisme 2D et 3D, animation, multimédia, interfaces utilisateur, databind...
Cliquez pour lire la suite de l'article par odewit EDM : COMMENT UTILISER L'HORIZONTAL ENTITY SPLITTINGEDM : COMMENT UTILISER L'HORIZONTAL ENTITY SPLITTING par Matthieu MEZIL
Une des raisons pour lesquelles j'adore l'Entity Framework est la puissance de son mapping. Beaucoup de développeurs pour ne pas dire la plus part n'en n'ont pas conscience. Pour rappel, j'ai réalisé des videos (en anglais) sur le mapping . Certains scena...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WP7DEV][REACTIVE] RENDRE LES REACTIVE EXTENSIONS PLUS STABLES[WP7DEV][REACTIVE] RENDRE LES REACTIVE EXTENSIONS PLUS STABLES par jay
Lorsque l'on développe des applications .NET, les exceptions non gérées dans des threads ont le désagréable effet de terminer le processus courant.
Dans l'exemple suivant.......(read more) ...
Cliquez pour lire la suite de l'article par jay WINDBG / SOS / PSSCOR2 : FAILED TO LOAD DATA ACCESS DLL (MSCORDACWKS)WINDBG / SOS / PSSCOR2 : FAILED TO LOAD DATA ACCESS DLL (MSCORDACWKS) par coq
Ceux d'entre nous qui analysent des dumps d'applications .NET (notamment ceux créés via WER après un crash) en dehors de l'environnement initial ont probablement tous été confrontés au moins une fois au message suivant, à la saisie d'une commande SOS ...
Cliquez pour lire la suite de l'article par coq
Logiciels
Microsoft Office (2010)MICROSOFT OFFICE (2010)Microsoft Office 2010 offre de nouveaux moyens flexibles et puissants pour optimiser votre travai... Cliquez pour télécharger Microsoft Office SeaMonkey (2.0.7)SEAMONKEY (2.0.7)Le projet SeaMonkey est issu d'un effort communautaire pour developper une application tout en un... Cliquez pour télécharger SeaMonkey Safari (5.0.2)SAFARI (5.0.2)Le navigateur d'Apple a lui aussi été mis à jour, aussi bien dans sa mouture Windows que celle po... Cliquez pour télécharger Safari Mozilla FireFox (4.0 béta 5)MOZILLA FIREFOX (4.0 BéTA 5)Firefox 4.0 béta 5
L'une des nouveautés visibles les plus attendues réside sans doute dans l'a... Cliquez pour télécharger Mozilla FireFox Mozilla Firefox (3.6.9)MOZILLA FIREFOX (3.6.9)Firefox 3.6.9 corrige les problèmes suivants :
* Introduced support for the X-FRAME-OPTION... Cliquez pour télécharger Mozilla Firefox
|