Décalage MouseDown SetPixelV

Résolu
Herve_be Messages postés 966 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 30 janvier 2023 - Modifié le 8 janv. 2022 à 13:54
Herve_be Messages postés 966 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 30 janvier 2023 - 8 janv. 2022 à 15:32
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

NHenry Messages postés 15039 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 7 février 2023 156
8 janv. 2022 à 14:40
Si ton Picture box a une bordure, je pense que la position du pixel est décalée de la taille de la bordure.
0
Herve_be Messages postés 966 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 30 janvier 2023 2
Modifié le 8 janv. 2022 à 14:51

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 ?
0
NHenry Messages postés 15039 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 7 février 2023 156
8 janv. 2022 à 15:21
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.
0
Herve_be Messages postés 966 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 30 janvier 2023 2
8 janv. 2022 à 15:32
0