Rotation (rapide) de bitmap (à 360°) en pur gdi

Soyez le premier à donner votre avis sur cette source.

Vue 9 278 fois - Téléchargée 917 fois

Description

Exemple simple de rotation de bitmap en pur GDI

Ceci est possible grâce à l'utilisation de la fonction PlgBlt

Le code est assez simple et commenté ... juste ce qu'il faut ;-)

Source / Exemple :


All in Zip

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
12 septembre 2009

Salut Cirec,

Je te propose un petit test pour mieux comprendre la rapidité de cette fonction (PlgBlt).
Au lieu de charger un cube orné des nouilles, ou autres images de taille inferieure à 512x512, charge donc une photo faite avec un appareil photo numérique (disons une photo.bmp de 3500x2500 en pf24bit) et essaye de la tourner légèrement … Je te mets 10/10 pour la documentation et pour le code …

PS : N’essaye pas le Ctrl+Alt+Suppr, ça ne marche pas dans ces cas là.
Messages postés
129
Date d'inscription
mercredi 4 février 2004
Statut
Membre
Dernière intervention
25 juillet 2012
1
Merci beaucoup pour cette source qui est bien commentée et bien codée.

Je me tente à mettre une note car je vois que personne ne l'a encore fais. Je te mets 9 / 10 pour ne pas mettre 10 / 10.

J'apprécie particulièrement la clarté du code et la vitesse d'exécution de la rotation. Je ne connaissais pas PlgBlt mais je l'a place dans un coin de ma tête.

Merci et bonne continuation à tous.
Messages postés
3815
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
4 août 2020
35
@Debiars:

je ne suis pas certain d'avoir bien compris ta demande.

Tu aimerais pouvoir enregistrer l'image dans une position (après rotation)

Dans ce cas :
Il faut savoir que peut importe l'angle de rotation

PntArray[0] <----- représente le coin supérieur gauche de l'image
PntArray[1] <------ représente le coin supérieur droit de l'image
PntArray[2] <------ représente le coin inférieur gauche de l'image

le coin inférieur droit est calculé automatiquement par PlgBlt

Donc en créant un Bitmap et en lui donnant des dimmensions suffisante (pour ne pas tronquer l'image) tu peux afficher/enregistrer le résultat avec :

PlgBlt(BMPDest.Canvas.Handle, PntArray, BMP.Canvas.Handle, 0, 0, BMP.Width, BMP.Height, 0, 0, 0);
Messages postés
285
Date d'inscription
lundi 16 juin 2003
Statut
Membre
Dernière intervention
11 février 2018

Salut Cirec,
Moi, j'aimerai bien récupérer dans un fichier le bitmap dans sa nouvelle position... Tel quel, je ne récupère qu l'image d'origine.

Même réfexion à drjerome qui en plus me rogne des parties d'image.

Cela me servirait bien pour redresser de quelques degrés des images scannées de traviole.

Pour la vitesse d'exécution, y a rien à dire, c'est --->

jp ofBiars
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015

Bonjour

oui dans les fonctions GDI

il y a

"PlgBlt" et aussi "SetWorldTransform"


il y a un exemple que j'ai fait, si vous voulez le voir en tapant "JROD SetWorldTransform" sur google

A+

drjerome JROD
Afficher les 9 commentaires

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.