Renseignement sur "shape"

cyril76140 Messages postés 18 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 11 mai 2012 - 17 juin 2008 à 14:49
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 - 17 juin 2008 à 21:54
Bonjour, je souhaiterai faire une interface graphique. plus simplement je voudrai juste qu'un cercle ( fait avec shape) soit tranparent, sans bord, et que le bord devienne noir losrque la souris passe au dessus... (est ce clair ? lol parce que je m'explique comme un manche)

j'ai essaye en vain de crée ce code mais il ne fonctionne pas:

mon code:

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single )
    If Point(X, Y) = Shape1.BackColor Then
        'Shape1.BackStyle = 0
        Shape1.BorderStyle = 1
   
    Else
        'Shape1.BackStyle = 0
        Shape1.BorderStyle = 0
   
    End If
End Sub

Quelqu'un pourrais t'il m'aider a resoudre mon leger probleme
merci d'avance
Cyril

3 réponses

Supra3000 Messages postés 159 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 8 janvier 2010 2
17 juin 2008 à 17:44
Je ne connais pas bien shape mais jai une autre solution plus rapide :

1 - Trouver 2 images de cercle (*.gif pour pouvoir mettre l'arriere transparent au pire met le background autour de ton cercle de la meme couleur que ton arriere plan)

2 - Tu met 2 picturebox 1 par dessus l'autre

3 - tu code l'évenement onMouseOver() . Exemple
   if ....
      picturebox1.visible=false
      picturebox2.visible=true
   else
      picturebox1.visible=true
      picturebox2.visible=false
   end if

Bonne Prog
Supra3000
0
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
17 juin 2008 à 21:40
Est-ce que tu as modifier la couleur du background ou la couleur du FillColor

si c'est le fillcolor tu deverais alors utilisé ceci :

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single )
    If Point(X, Y) = Shape1. FillColor Then
        'Shape1.BackStyle = 0
        Shape1.BorderStyle = 1
   
    Else
        'Shape1.BackStyle = 0
        Shape1.BorderStyle = 0
   
    End If
End Sub

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
0
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
17 juin 2008 à 21:54
Ah je viens de relire ta description... pis si ton shape est tranparent ... tu peux pas utilisé point(x,y) lolllolollll

Point(x,y) retourne la couleur du point situé en x, y  mais si c'est transparent.... ca revien a la meme couleur que le fond de ta form....

Tu peux toujours utilisé ce code:

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    With Shape1
        If X >= .Left And X <= (.Left + .Width) And Y >= .Top And Y <= (.Top + .Height) Then
            .BorderStyle = 1
        Else
            .BorderStyle = 0
        End If
    End With
End Sub

Mais comme un control est rectangulaire, carré ou linéaire.... ton cercle va avoir la bordure meme si la souris n'est pas directement a l'intérieur du cercle.

Donc je te recommande la solution de supra3000, si non tu peux peut-etre utiliser 8,10,12,16,... points pour valider que tu est a linterieur du cercle...

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
0
Rejoignez-nous