Plgblt et la rotation de bitmaps

Soyez le premier à donner votre avis sur cette source.

Vue 5 823 fois - Téléchargée 568 fois

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

Ajouter un commentaire Commentaires
Bacterius
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
15 avril 2009 à 16:48
Hmm ...
je propose un plantage brutal de Windows avec écran bleu et beaucoup de texte blanc ...
Ou bien un beep comme celles des fusées (les bips qui passent par toutes les tonalités possibles pour réveiller un homme inconscient). Je crois que c'est faisable ...

Cordialement, Bacterius !
Caribensila
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
18
15 avril 2009 à 15:22
URGENT!

T'as rien prévu pour réveiller un mec hypnotisé par la spirale à vitesse = 5 ?
Bacterius
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
15 avril 2009 à 02:58
Codé sous Delphi 6 Personal Edition.

Cordialement, Bacterius !

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.