Décalage MouseDown SetPixelV

Résolu
Herve_be Messages postés 1016 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 24 avril 2024 - Modifié le 8 janv. 2022 à 13:54
Herve_be Messages postés 1016 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 24 avril 2024 - 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 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
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 1016 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 24 avril 2024 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 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
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 1016 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 24 avril 2024 2
8 janv. 2022 à 15:32
0
Rejoignez-nous