Salut,
------

En dessinant dans un contrôle, je me suis heurté par hasard à un phénomène curieux.

Après quelques essais, j'ai écrit ceci dans la méthode OnPaint (gfx étant le Graphics de l'argument) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 gfx.DrawRectangle(Pens.Black, ClientRectangle);
Je m'attendais à dessiner un rectangle de la taille du contrôle, mais en fait
ceci dessine un rectangle dont il manque le côté droit et le côté inférieur, ce qui revient à dire qu'en fait le contrôle est plus petit que le rectangle.

J'ai donc écrit ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
gfx.DrawRectangle(Pens.Black, 0, 0, Width-1, Height-1);
Cette fois, ça fonctionne et donc ça confirme la divergence de dimension.
Restait à savoir si c'est le contrôle qui renvoie des dimensions trop petites ou si c'est DrawRectangle qui dessine un rectangle trop grand.

J'ai donc testé ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
gfx.DrawRectangle(Pens.Black, 0, 0, 0, Height-1);
Soit un rectangle de largeur nulle : je n'obtiens rien, donc "0" donne bien une largeur de 0.

Ensuite ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
gfx.DrawRectangle(Pens.Black, 0, 0, 1, Height-1);
Et là, j'obtiens une barre verticale de largeur 2, donc "1" donne une largeur "2".

Et évidemment ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
gfx.DrawRectangle(Pens.Black, 0, 0, 2, Height-1);
donne un rectangle composé d'un bord gauche de 1 pixel, d'une zone vide de 1 pixel, et d'un bord droit de 1 pixel, et donc un rectangle de largeur 3, et non 2.

Quelqu'un a une idée, sachant que j'observe le même phénomène pour les autres fonctions de dessin, comme FillRectangle?
Un problème d'arrondi?

Merci,
Claude