VBA : Dessiner sur une image

valou

XLDnaute Nouveau
Bonjour à tous,

Je souhaiterais "dessiner" sur une image présente dans un userform : ajouter une marque rouge (croix ou point) à l'endroit ou je clique sur l'image, un peu comme un jeu des sept différences :)

Enfin, lorsque je clique sur Ok, j'aimerais que ces points apparaissent sur l'image du classeur.

Je ne sais pas trop par ou commencer, et si il existe des fonctions qui peuvent me permettre ceci.

je vous joins un fichier avec un userform et une image, jusque la y'a pas trop de problèmes !

Merci pour les pistes / solutions, je reste dispo pour plus d'info

Val
 

Pièces jointes

  • Forum.xlsm
    65.2 KB · Affichages: 57
  • Forum.xlsm
    65.2 KB · Affichages: 57

Dranreb

XLDnaute Barbatruc
Re : VBA : Dessiner sur une image

Bonjour.
Ils ne se sont toujours pas décidé à mettre en place un système simple pour modifier les pixels d'une image dans un UserForm, et j'ai bien peur qu'ils ne le feront hélas jamais.
Il faut donc passer par plein d'API de la Lib "gdi32"
 

valou

XLDnaute Nouveau
Re : VBA : Dessiner sur une image

Bonjour, je pensais utiliser des fonctions du genre :

-Localiser le pointeur suivant X et Y sur l'image
-Lors du clic faire apparaitre une image (carré rouge tout petit) à l'endroit du pointeur grâce aux coordonnées par dessus mon image de base..

C'est faisable ?

Merci beaucoup
 

Dranreb

XLDnaute Barbatruc
Re : VBA : Dessiner sur une image

Oui, ça ça l'est un peu plus.
Cliquez deux fois sur votre Image. Image1 étant alors sélectionné dans la liste de gauche qui surmonte la fenêtre de code, intéressez vous dans celle de droite aux MouseMove, MouseDown et MouseUp.
Il vous en faudra aussi pour le petit carré…
Conseil: mettez des Label de mise au point destinés à recevoir comme Caption les valeurs X et Y
 

valou

XLDnaute Nouveau
Re : VBA : Dessiner sur une image

Dranreb, Pierre,

Merci beaucoup, c'est à chaque fois un plaisir de trouver de l'aide aussi rapidement sur ce forum.
Je vais étudier ces quelques lignes et essayer d'optimiser tout ça pour mon projet :)

A bientôt
 

DoubleZero

XLDnaute Barbatruc
Re : VBA : Dessiner sur une image

Bonjour à toutes et à tous,

@ tatiak :),

Pour ce nouveau-superbe travail, j'applaudis de mes quatre sabots !

Mais... Où qu'il est le fil :) ? Où qu'il est l’hameçon :confused: ? Où qu'il est le poisson :eek: ?

A bientôt ;):D
 

valou

XLDnaute Nouveau
Re : VBA : Dessiner sur une image

Chapeau, c'est vraiment sympa. J'ai compris la démarche.

Une dernière petite question,

Code:
lbl.Object.Picture = LoadPicture(ActiveWorkbook.Path & "\croix.gif")

L'image doit obligatoirement être chargée depuis un dossier ? Ou bien il est possible de la laisser trainer dans un coin du tableur tel que dans l'usf ?
 

valou

XLDnaute Nouveau
Re : VBA : Dessiner sur une image

Joli !!

Mais arriveras-tu à combiner un MouseDown avec un MouseMove pour déssiner sans cliquer mille fois..? ;)
Beau travail

Histoire de revenir sur mon projet, lorque je mets mes images du usf dans un cadre (frame) les carrés rouges n'apparessent plus :(
Y'a t-il une ligne que je peux ajouter qui gère les plans des objets ? (avancer, reculer)
Je crois que les carrés rouges appararaissent derriere le cadre
 

valou

XLDnaute Nouveau
Re : VBA : Dessiner sur une image

Je me répond moi même, si ça peut être utile à quelqu'un..
Pour ajouter l'image dans un frame et non directement dans le usf :

La ligne suivante :

Code:
 Set lbl = Controls.Add("Forms.Image.1")

Devient :

Code:
    Set lbl = Frame1.Controls.Add("Forms.Image.1")

Tout simplement
 

Paf

XLDnaute Barbatruc
Re : VBA : Dessiner sur une image

Bonjour à tous

@ tatiak :Belle idée ! Chapeau ! !

@ valou :
Mais arriveras-tu à combiner un MouseDown avec un MouseMove pour déssiner sans cliquer mille fois..?

un essai en utilisant MouseMove on dessine en maintenant le clic gauche:

Code:
Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
 Dim lbl As Object
 If Button = 1 Then ' si clic gauche
    Set lbl = Controls.Add("Forms.Label.1")
    With lbl
        lbl.Left = X + Image1.Left - 1
        lbl.Top = Y + Image1.Top - 1
        lbl.Width = 2
        lbl.Height = 2
        lbl.BorderStyle = 0
        lbl.BackColor = coloris_encours
    End With
 End If
End Sub

A+
 

valou

XLDnaute Nouveau
Re : VBA : Dessiner sur une image

Salut Pierre,

Merci pour ton retour,
Ok pour la fonction zorder, testée et approuvée.
J'ai utilisé une fonction similaire pour le changement d'image sur mon projet, tout fonctionne parfaitement :)

A un de ces jours,

Val
 

Discussions similaires

Statistiques des forums

Discussions
312 239
Messages
2 086 495
Membres
103 234
dernier inscrit
matteo75654548