Plgblt et la rotation de bitmaps

Description

Bonjour,
il existe déjà une source similaire sur le site (Par Cirec : http://www.delphifr.com/codes/ROTATION-RAPIDE-BITMAP-360-PUR-GDI_45850.aspx), mais j'avais envie de faire la mienne.
Alors rien de très compliqué, au menu, déterminer le centre d'un parallélogramme, bon ..., effectuer une rotation des 4 sommets du parallélogramme autour de son centre, bon ..., et enfin appeller le clou du spectacle, PlgBlt ! Cette fonction (API) permet de copier le contenu d'un bitmap (rectangulaire) dans une zone déterminée par un parallélogramme (en fait, elle ne nous en demande que 3 - ça lui permet d'éviter des erreurs dûes à un mauvais agencement de points, et ça nous simplifie la vie). Pour les calculs cosinus-sinus, j'utilise une table précalculée de sinus/cosinus (ça va quand-même plus vite !) qui stockent tous les cosinus/sinus de chaque angle de 0 à 359 en mémoire. J'ai fait une classe TParallelogramme, pas du tout évoluée, qui convient tout juste aux besoins de l'exemple.
J'inclus deux exemples, mon avatar repêché sur internet (très bon exemple pour la rotation), et une spirale sans fin (également sur internet). Et une capture d'écran pour voir rapidement de quoi il s'agit.
NEW : nouvelle option, effet 3D, qui, avec 2 lignes de code qui modifient un point du parallélogramme, va donner l'impression d'une rotation en 3D dimensions ...
Vous pouvez définir la vitesse de rotation du bitmap. La rotation est assurée par un timer (si vous voulez le thread, mettez un petit "T+" à la fin de votre message, sinon mettez un "T-", je récolte les votes demain soir).

En prime, petite utilisation de ShellExecute avec un hyperlien ;) j'avais pas envie de sortir la détection automatique de navigateur internet ...

N'oubliez pas de jeter un coup d'oeil également à la source de Cirec (cf. lien plus haut) si vous n'y êtes pas encore allé !

Source / Exemple :


// In the zip

Conclusion :


Voilà, tous commentaires, conseils, critiques, remarques, etc ...

Trivialement, Bacterius !

(héhé vous avez tous eu un choc là ^^)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.