PIVOTER UN PICTUREBOX DE 90 DEGRÉS INSTANTANÉMENT (OU PRESQUE)

Signaler
Messages postés
37
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
23 avril 2004
-
qbced
Messages postés
50
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
14 avril 2005
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/8168-pivoter-un-picturebox-de-90-degres-instantanement-ou-presque

qbced
Messages postés
50
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
14 avril 2005

Salut!!! Il me plait beaucoup aussi cette source, je m'explique, j'aimerais faire un programme qui ouvre mon format image (qui ressemble beaucoup à du bmp mais sans l'entete) le probleme c'est que avec ma methode d'ouverture(lire le fichier octet par octet, au bout de 3 octets sa fait un pixel et afficher pixel par pixel sur la picturebox en utilisant la commande pset de la picturebox ) c'est tres lent, je supose donc que c'est à cause de la commande pset car je ne vois pas comment faire autrement que de traiter pixel par pixel, j'aurais donc aimer savoir comment fonctionne la commande LoadBmp de windows (enfin savoir le code et le langage) mais pas moyen de trouver la moindre explication sur internet, donc j'ai du garder ma methode de traitement pixek par pixel (c'est peut etre la meme que loadbmp mais je l'utilise peut etre mal), j'ai donc pensé à utiliser un buffer, et j'ai pas encore trop regarder ton prog mais sa a l'aire de pouvoir m'aider, si tu pense que oui et si t'as un moyen ton aide me ferais le plus grand bien. Merci. Autre chose dans ton code y a certains truc que tu sais pas à quoi sa sert, j'peux peut etre t'aider mais fait attentino car ce que j'dit n'est qu'une hypothese (enfin j'en suis presque certain mais on sais jamais j'me trompe peut etre), donc deja la ligne:
rgbReserved As Byte
il me semble que cette ligne est obligatoire car le format des pixels n'est pas en 24 bits mais en 32 bits, il y a donc un octet qui ne sert à rien(le rgbreserved), dans certains cas 32 bits comme dans dx7, ce byte sert au rgba (c'est le "a") c'est en fait la teinte de gris de la couleur rgb, en asm j'ai eut un probleme dans ce cadre : mon mode d'ecran ne pouvait etre qu'en 32 bits et je devais donc laisser un octet vide dans le buffer (ici le rgbreserved), voila j'espere que tu as compri
(souvent j'ai du mal à m'expliquer) et que sa t'as aider. (au niveau du BiPlanes, je sais pas exactement ce que c'est mais sa doit avoir un rapport avec soit la couleur grise soit un buffer : double....). J'espere que tu pourra m'aide en retour dans mon programme d'ouverture d'image en mon format.
cs_Fripouil
Messages postés
175
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
8 mai 2017

Salut, marche nickel chez moi.

Mais peut on faire tourner l' image de quelques degrés à la place de 90 ? et si oui comment si prendre ?

Ciao
boursicotteur
Messages postés
201
Date d'inscription
mercredi 25 septembre 2002
Statut
Membre
Dernière intervention
10 novembre 2007

J'ai essayé (win98) avec .biBitCount=24 et une image 24 bits mais ca ne fonctionne toujours pas.

Par contre, je me pose des questions sur le dimentionnement du buffer "Buffer () As RGBQUAD" avec 2 dimentions.
Dans le démo qui fonctionne pour moi le buffer est dimentionné ainsi:
bBytes() As Byte
ReDim bBytes(1 To bi24BitInfo.bmiHeader.biWidth * bi24BitInfo.bmiHeader.biHeight * 3) As Byte
...mais c'est peut-être équivalent.

Il y a aussi les 2 premiers paramètres qui sont différents avec le démo qui fonctionne pour moi.
Le 1er:
Le démo utilise l'API CreateCompatibleDC() à la place de Pic1.hDC

Le 2è:
Le démo utilise l'API CreateDIBSection() à la place de Pic1.Picture.Handle

Ce 2è paramètre est très suspect à la lumière de ce que MSDN a écrit:
hbmp
[in] Handle to the bitmap. This must be a compatible bitmap (DDB).

Et cette image de la belle créature?
C'est dommage qu'elle soit intégré au picturebox car on ne peut pas aller lire ses infos pour connaître ses paramètres et savoir si elle est compatible.

Enfin, avec toutes ces pistes, c'est devenu relativement facile de trouver le problème. Surtout que nous avons un démo qui fonctionne et avec lequel nous pouvons comparer...
MoiOlivier
Messages postés
172
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
4 août 2005

Je n'ai sue XP chez moi, je ne saurais donc pas tester le prog sur d'autres systèmes. Sino, je me demande si l'erreur ne pourrait pas provenir du paramètre .biBitCount=32. Mais je ne saurais pas en dire plus pour le moment. Désolé.