Décalage MouseDown SetPixelV

Résolu
Signaler
Messages postés
920
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
8 janvier 2022
-
Messages postés
920
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
8 janvier 2022
-
Bonjour,
Je capture la position de la souris au moment où on clique dans une PictureBox avec MouseDown puis je modifie le pixel en question avec SetPixelV, le code est très simple :
Private Sub Photo2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Photo2.DrawMode = vbInvert
Call SetPixelV(Photo2.hDC, X, Y, RGB(255, 255, 255))

Le pixel est un peu plus bas que l'endroit où j'ai cliqué !
Auriez-vous une explication ?

3 réponses

Messages postés
14850
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022
160
Si ton Picture box a une bordure, je pense que la position du pixel est décalée de la taille de la bordure.
Messages postés
920
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
8 janvier 2022
2

C'est ça.
Avec BorderStyle = 1 (Fixed single) il y a un décalage.
Avec BorderStyle = 0 (none) il n'y en a pas.
Sais-tu pourquoi ?
Messages postés
14850
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022
160
Quand tu cliques c'est la position du curseur selon le bords extérieur du controle qui est pris en compte, mais quand tu définis un pixel c'est dans l'image, l'images est affectée par les bordures du controles.
Messages postés
920
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
8 janvier 2022
2