2010-04-07 3 views
1

Après avoir travaillé avec l'objet .NET GDI + Rectangle, j'ai remarqué que si je crée un rectangle qui est X: 0 * Y: 0 * Largeur: 100 * Hauteur: 100, le Right et Les propriétés Bottom sont définies sur 100, 100. Cela ne devrait-il pas être 99, 99? 0 - 99 est de 100 pixels. 0 - 100 correspond à 101 pixels. FWIW, la documentation indique que le droit est calculé par x + width et le bas est y + height, mais est-ce exact? Peut-être que "correct" n'a pas d'importance ici tant que c'est cohérent? Tout ce que je sais, c'est que c'est un peu (très ... énervant) ennuyeux!Rectangle .NET désactivé par 1

Répondre

2

Cela dépend si vous considérez les coordonnées comme des pixels entiers ou si vous marquez les points entre pixels. Si vous les considérez comme des points infiniment petits, le nombre de pixels entre (0, 0) et (100, 0) est 100 pixels. Si, toutefois, vous les considérez comme étiquetant les pixels - de sorte que les deux pixels (0, 0) et (100, 0) sont inclus dans le rectangle, alors c'est clairement 101 pixels de large comme vous le dites.

Ce serait bien de l'avoir épelé quelque part, bien sûr. Je le soupçonne, mais je n'ai pas parcouru la documentation pertinente. Espérons que quelqu'un peut fournir un lien :)

+0

Si cela se produit, alors il devrait y avoir au moins deux variantes de Rectangle. Pourquoi quelqu'un avec un appareil pixellisé voudrait-il marquer des points entre les pixels? –

+0

@roygbiv: J'ai tendance à penser que c'est un modèle plus élégant qui fonctionne mieux avec la mise à l'échelle pour différents DPI, mais je pense que cela devrait au moins être plus clair. –

2

Des documentation.

« Les dimensions de la zone client sont également décrits par une structure rectangulaire contenant des coordonnées client pour la zone Dans tous les cas, le coin supérieur gauche La coordonnée du rectangle est incluse dans la zone client, tandis que la coordonnée inférieure droite est exclue.Les opérations graphiques n'incluent pas les bords droit et inférieur d'une zone cliente. " Donc, vos points x comprennent l'ensemble [0,100] qui est de 100 valeurs.

+0

@Jacob G - Yup c'est ce que j'ai dit dans mon post. –

+0

@ roygbiv- Je suis désolé, mais vous n'avez rien dit de tel dans votre message. Vous vous demandiez s'il était correct que la «bonne» propriété soit 100 vs 99 dans votre scénario. Je fournissais des documents supplémentaires à l'appui du fait que 100 étant correct. Je ne suis pas sûr de savoir comment répondre à la question que vous avez posée justifie un downvote. –