Dessiner, étirer un cadre à la souris sur une image [Résolu]

Signaler
Messages postés
12
Date d'inscription
lundi 15 mai 2006
Statut
Membre
Dernière intervention
31 mai 2007
-
Messages postés
12
Date d'inscription
lundi 15 mai 2006
Statut
Membre
Dernière intervention
31 mai 2007
-
Bonjour à tous,

J’espère un peu d’aide de votre part, voici mon problème :
Je dois réaliser une petite interface pour mon forum favori (photos de microscopie)
Cette apli. doit aider les membres à poster leurs observations dans un format défini.
J’utilise la librairie FreeImage pour les redimensionnements et les export. en jpg
J’aimerais ajouter la possibilité de recadrer une image (recadrer, pas redimensionner) en utilisant la souris et en étirant un cadre sur la photo avec une proportion définie (1.33 x 1)

Comment dessiner et étirer ce cadre avec la souris directement sur la photo (dans un conteneur Image ou Pict.Box) ???


Merci de votre aide
Chris

5 réponses

Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013

Autant pour moi, il s'agit bien de mousemove. En fait une combinaison. Ce que je te propose et que je viens de tester, c'est d'utiliser une image ou une picturebox (selon ton besoin) pour stocker ton image. C'est très fluide et ça marche impeccable.
Voici mon code, avec une image chargée dans image1 et une picturebox chargée au démarrage de l'application dans laquelle on place le contenu de image1. Si ton image est modifiée, il te faudra la stocker lors du mousedown dans une picture2, afin de pouvoir la rétablir à chaque mouvement de souris.

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If old_x "" Then old_x XIf old_y "" Then old_y Y


End Sub




Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button 1 Then Picture1.Picture Image1.Picture: Picture1.Line (old_x, old_y)-(X, Y), , B


End Sub




Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
old_x = ""
old_y = ""


End Sub

Jer
Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
1
Tu veux dire rétrécir, car cadrer c'est rétrécir. par contre je programme pas en VB6 donc pour le code je peux te donner du VB.Net si tu saurais le retranscrire.

Redman
Messages postés
135
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
14 février 2013

utilises les variables x et y dans l'événement mousedown
ajoute 2 variables old_x et old_y
A chaque passage dans ta procédure, efface ton carré avec old_x et old_y et retrace avec x et y

Jer
Messages postés
12
Date d'inscription
lundi 15 mai 2006
Statut
Membre
Dernière intervention
31 mai 2007

Merci pour vos réponses rapides !


 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /?>


Redman :


Il s’agit bien de réaliser un re-cadrage, c.à.d utiliser une nouvelle portion de l’image (sans changer sa résolution)


Pour ceci j’aimerais réaliser un rectangle de sélection à la manière des prog. de dessin genre Paint ou Photoshop.


A propos de  .net je viens d’installer 2005 express mais je n’y connais encore rien du tout !


 


Jer :


Je vois bien comment dessiner un rectangle à la souris sur l’image, mais comment l’effacer ???


En principe l’utilisateur click et relâche le bouton une fois le cadre tracé (mais le cadre doit être constamment redessiné)


Comment vois-tu la gestion de MouseDown, j’avais plutôt l’idée que c’est dans MouseMove que l’action se passerait ?


 


Au passage (c’est pas indispensable) Est-ce qu’il existe des contrôles (ocx ou autres) permettant d’utiliser un rect. de sélection avec poignée de redimensionnement ?


 


Merci d’avance pour le coup de main


Chris
Messages postés
12
Date d'inscription
lundi 15 mai 2006
Statut
Membre
Dernière intervention
31 mai 2007

Merci  Jer !


C’est parfait (il faudra juste que j’adapte une proportion fixe pour le cadre : 1.33 x 1)


J’avais finalement résolu le problème autrement, en utilisant un Shape sur l’image, déplacement à la souris et étirement avec un Slider … 


Mais ta soluce me convient beaucoup mieux


A+



Chris