Déterminer la couleur des pixels parcouru par le pointeur sur une form

Contenu du snippet

La variable pix détermine la valeur de la couleur sous le pointeur

Ce code peut servir pour des jeu ou ce style de repérage est nécessaire

La commande point (x,y) seule n'est pas satisfaisante car les événements déclanchés par la souris sont trop distants dans le temps par rapport à la vitesse de déplacement du pointeur.
Il faut donc déterminer la couleur de chaque pixel sur un segment compris entre les points repérés par deux évenements consécutifs.
Le fonctionnement du code est optimisé par le calcul de la pente du segment qui détermine si l'on incrémente l'axe des x ou celui des y pour prendre en compte tous les pixels.

Source / Exemple :


Private Sub form_mousemove(button As Integer, shift As Integer, x As Single, y As Single)
Image1.Move x, y
cstex = x - x1: If cstex = 0 Then Exit Sub: If a = 0 Then Exit Sub
cstey = y - y1
a = (y - y1) / cstex
b = y - (a * x)
If Abs(cstex) > Abs(cstey) Then
    Select Case cstex
        Case Is >= 0
            For i = 1 To cstex
            z = a * (x - i) + b
            pix = Point((x - i), z)
             Next i
        Case Is < 0
            For i = 1 To Abs(cstex)
            z = a * (x + i) + b
            pix = Point((x + i), z)
            Next i
    End Select
Text1.Text = pix
Else
    Select Case cstey
        Case Is >= 0
            For i = 1 To cstey
            z = ((y - i) - b) / a
            pix = Point(z, (y - i))
            Next i
        Case Is < 0
            For i = 1 To Abs(cstey)
            z = ((y + i) - b) / a
            pix = Point(z, (y + i))
            Next i
    End Select
Text1.Text = pix
End If
x1 = x
y1 = y
End Sub

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.