Ce sujet est résolu.
1 | |||||
Auteur | Messages | ||||
---|---|---|---|---|---|
Esprit | #1 Posté le 2/11/2012 à 12:04:52 | ||||
Bonjour à tous, Je fais partie d'une association de robotique, l'Association Caliban Belgique (branche belge). L'an passé, avec l'école, j'ai participé à un concours de robotique dont l'objectif était de concevoir un petit robot mobile et de le diriger à partir de son ordinateur. Nous avions alors programmé une petite interface en VB.Net (que nous apprenions en cours). Cette année, on participe en tant qu'asso'. Et tant qu'à faire, autant passer sur du libre. Pour mes tests, j'aimerais faire tourner une image de 0 à 180°. J'ai donc fait un mini-programme avec juste 3 boutons (0 - 90 et 180°) et une progressbar pour gérer l'angle plus finement. (voir cette capture d'écran) Par contre... Je n'arrive pas à faire tourner l'image. Il y a bien une fonction "picturebox.Picture.Image.Rotate(float)" mais si je mets :
L'image ne bouge pas. Une idée ? Je débute en Gambas donc j'ai encore un peu de mal. Merci d'avance, Roboticien de l'Association Caliban, Débutant en Gambas. | |||||
Prokopy | #2 Posté le 2/11/2012 à 23:38:20 | ||||
Kinder Pingui | Salut Esprit, La fonction Image.Rotate() ne fonctionne pas tout à fait comme cela. Elle ne modifie pas l'image elle-même, mais une copie de celle-ci (qui est retournée, voir la documentation pour plus de détails). Le code qui ferait tourner l'image serait donc celui-ci :
Cependant, avec ce code les effets vont s'additionner à chaque clic (vu que l'image modifiée de la pictureBox est rechargée puis remodifiée). Il faut donc sauvegarder l'image originale en mémoire (en la chargeant au préalable avec la fonction Image.Load() ), de cette façon :
Voilà, n'hésite pas à demander si tu as d'autres questions. La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi. | ||||
Esprit | #3 Posté le 3/11/2012 à 12:21:54 | ||||
Merci pour cette réponse claire et rapide, je teste ça cette après-midi. :-) [edit : Alors, j'ai testé tes solutions. La première aussi, ne serait-ce que pour voir ce que ça fait. La première me renvoie une erreur.
Erreur : Type mismatch: wanted picture, got image instead Est-ce du au fait que je n'ai pas déclaré l'image utilisée dans le code mais directement en cliquant sur le "pictureBox", dans la partie création graphique ? La deuxième solution fait bien tourner l'image. Par contre, pas de 90°... Je vais fouiller la doc pour comprendre. Roboticien de l'Association Caliban, Débutant en Gambas. | |||||
Esprit | #4 Posté le 4/11/2012 à 10:09:10 | ||||
L'argument pour l'angle doit être en radian. Voilà pourquoi ça ne correspondait pas à ce que j'attendais. (Rappel : 1 radian = ~57.3° ) Ça fonctionne parfaitement maintenant. Merci. Roboticien de l'Association Caliban, Débutant en Gambas. | |||||
Prokopy | #5 Posté le 4/11/2012 à 11:54:05 | ||||
Kinder Pingui | Merci pour cette réponse claire et rapide, je teste ça cette après-midi. :-) Oups pardon, c'est une erreur inattention de ma part. Il faut reconvertir l'Image en Picture pour que la PictureBox puisse l'utiliser. Le bon code (pour le premier) est en fait :
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi. | ||||
gambix | #6 Posté le 4/11/2012 à 12:43:55 | ||||
Faire simple ! | Picbox.picture = himg. Rorate(rad(90)).picture Je conseille de charger l'image original dans une variable image. Moins de texte dans une signature c'est agrandir son espace. | ||||
Prokopy | #7 Posté le 4/11/2012 à 12:48:27 | ||||
Kinder Pingui | Picbox.picture = himg. Rorate(rad(90)).picture C'est bien ce que j'ai dit. La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi. | ||||
1 |