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
[WF4] PASSAGE D'ARGUMENTS LITERAL, VISUALBASICVALUE OU LAMBDAVALUE?[WF4] PASSAGE D'ARGUMENTS LITERAL, VISUALBASICVALUE OU LAMBDAVALUE? par JeremyJeanson
Avec la sortie de la RC de Visual Studio 2010, Microsoft a mis un peu les points sur leS i en ce qui concernait le passage d'arguments. Mais nous somme un certain nombre à avoir pris ce changement comme un coup dur. Pour résumer la situation : à la sortie...
Cliquez pour lire la suite de l'article par JeremyJeanson [RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit
Forum
RE : DELPHIRE : DELPHI par overtaker
Cliquez pour lire la suite par overtaker
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|