salut moscato40,
je n'ai pas vb6 mais j'ai réalisé ceci en vb net si tu décide de t'y mettre on sait jamais
'colle ceci dans une form vierge puis appuie sur F5
Public
Class
Form1
Dim
picG
As
PictureBox =
New
PictureBox
'declaration d'une picturebox
Dim
btnSuivant
As
Button =
New
Button
'declaration d'un bouton
Dim
Dict(,)
As
String
'dictionnaire
Dim
Num
As
Integer
'compteur des mots a changer bien entendu selon ton code
Dim
PointClick
As
Rectangle
'rectangle contenant ton point cliquable
Dim
b
As
Bitmap
'declaration d'un bitmap
Dim
g
As
Graphics
'declaration d'un objet de dessin (pour dessiner sur b)
Private
Sub
Form1_Load(
ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
MyBase
.Load
'adapter ceci a ton code ---------------------
ReDim
Dict(2, 5)
Dim
d(2)
As
String
d(0) =
"bois, forˆt, bosquet"
d(1) =
"fouiller, farfouiller, fourgonner, fureter, ratisser, fourrager"
d(2) =
"attaquer, accuser, agresser"
Dim
x
As
Integer
For
x = 0
To
UBound(d)
Dim
tmp()
As
String
= Split(d(x),
", "
)
For
y = 0
To
UBound(tmp)Dict(x, y) = tmp(y)
Next
Next
'---------------------------------------------
'proprietes de la picturebox
With
picG.Parent =
Me
.Bounds =
New
Rectangle(3, 3, 280, 150).BorderStyle = BorderStyle.Fixed3D
End
With
'ajout d'un evenement mousedown
AddHandler
picG.MouseDown,
AddressOf
picG_Click
'propriete du bouton
With
btnSuivant.Parent =
Me
.Bounds =
New
Rectangle(3, picG.Height + 10, 150, 22).Text =
"Mot Suivant"
End
With
'ajout d'un evenement click au bouton
AddHandler
btnSuivant.Click,
AddressOf
btnSuivant_Click
'petit click dessus
btnSuivant.PerformClick()
End
Sub
Private
Sub
btnSuivant_Click(
ByVal
sender
As
Object
,
ByVal
e
As
EventArgs)
'on essaye d'afficher l'image genere par la fonction AfficheMotSuivant
Try
picG.Image = AfficheMotSuivant()
Catch
ex
As
IndexOutOfRangeException
'si echec on remet le compteur a zero et on réaffiche
Num = 0
picG.Image = AfficheMotSuivant()
End
Try
End
Sub
Private
Function
AfficheMotSuivant()
As
Image
'demande d'une image vierge puis objet de dessin
b =
New
Bitmap(picG.Width, picG.Height)g = Graphics.FromImage(b)
'remplissage d'un rectangle de fond (pour faire joli)
g.FillRectangle(
New
SolidBrush(Color.Firebrick),
New
Rectangle(0, 0, picG.Width, picG.Height))
'ecriture du mot de base 0 du dictionnaire
g.DrawString(Dict(Num, 0),
New
Font(
"Arial"
, 12, FontStyle.Regular),
New
SolidBrush(Color.Yellow), 5, 5)
'creation du rectangle qui contiendra le point cliquable (on mesure le mot pour afficher le point juste derriere)
PointClick =
New
Rectangle(g.MeasureString(Dict(Num, 0),
New
Font(
"Arial"
, 12, FontStyle.Regular)).Width + 10, 10, 8, 8)
'dessin du point cliquable
g.FillEllipse(
New
SolidBrush(Color.Tomato), PointClick)
'incrementation de numerot mot
Num += 1
'renvoi de l'image obtenue
Return
b
End
Function
Private
Sub
picG_Click(
ByVal
sender
As
Object
,
ByVal
e
As
MouseEventArgs)
'detection des coordonn‚es du click sur la picturebox
If
e.X > PointClick.X
And
e.X < PointClick.X + PointClick.Width
And
e.Y > PointClick.Y
And
e.Y < PointClick.Y + PointClick.Height
Then
'si l'on se trouve dans le rectangle cliquable on affiche les synonymes
picG.Image = AfficheSynonymes()
End
If
End
Sub
Private
Function
AfficheSynonymes()
As
Image
'demande d'un clone de l'image affich‚e afin d'y rajouter les synonymes
Dim
i
As
Image = b.Clone
'declaration d'un rectangle (qui contiendra les points de correspondance)
Dim
rectdest
As
Rectangle
'objet de dessin sur le clone i
g = Graphics.FromImage(i)
'hauteur qu'on incr‚mentera afin de superposer les mots
Dim
hauteur
As
Integer
= 5
'boucle d'affichage des synonymes
For
x = 1
To
5
'dessin du synonyme
g.DrawString(Dict(Num - 1, x),
New
Font(
"Arial"
, 12, FontStyle.Regular),
New
SolidBrush(Color.Orange), 190, hauteur)
'si le synonyme existe
If
Dict(Num - 1, x) <>
""
Then
'calcul position du rectangle du point de correspondance
rectdest =
New
Rectangle(180, hauteur + 5, 8, 8)
'dessin du point de correspondance
g.FillEllipse(
New
SolidBrush(Color.Tomato), rectdest)
'dessin de la ligne reliant le point cliquable au point du synonyme
g.DrawLine(
New
Pen(Color.White), PointClick.X + 8, PointClick.Y + 4, rectdest.X, rectdest.Y + 4)
End
If
'incrémentation de la hauteur
hauteur += 20
Next
'renvoi du clone modifié de l'image d'origine
Return
i
End
FunctionEnd
Class