Rect r = new Rect(new Point(0, 0), new Point(-1, -1));
var check = r.Top > r.Bottom; //false, Top is -1

J'ai pensé, ce que Top devrait être plus grand que Bottom. Pourquoi ce n'est pas vrai?

0
Win4ster 24 juil. 2017 à 15:49

2 réponses

Meilleure réponse

Vous semblez avoir l'impression que new Rect(new Point(0, 0), new Point(-1, -1)) créerait un Rect avec une largeur et une hauteur négatives. Ce n'est pas le cas.

En fait, comme mentionné dans la documentation en ligne, il

initialise une nouvelle instance de la structure Rect qui est exactement suffisamment grande pour contenir les deux points spécifiés.

Un aperçu du code source de ce constructeur révèle comment cela fonctionne.

public Rect(Point point1, Point point2)
{
    _x = Math.Min(point1._x, point2._x);
    _y = Math.Min(point1._y, point2._y);

    //  Max with 0 to prevent double weirdness from causing us to be (-epsilon..0)
    _width = Math.Max(Math.Max(point1._x, point2._x) - _x, 0);
    _height = Math.Max(Math.Max(point1._y, point2._y) - _y, 0);
}
2
Clemens 24 juil. 2017 à 18:40

Le point (0,0) dans la plupart des infographies se trouve dans le coin supérieur gauche et plus vous allez bas, plus votre coordonnée y est élevée. Même chose avec la coordonnée x lorsque vous allez plus à droite.

1
Kamil Kulach 24 juil. 2017 à 12:54