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) :
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 :
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 :
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 :
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 :
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
Partager