netlib.narod.ru | < Назад | Оглавление | Далее > |
В структуре Rectangle определяется совокупность свойств, которые дают любую желаемую информацию:
Свойства Rectangle
Тип | Свойство | Доступ |
Point | Location | Чтение/запись |
Size | Size | Чтение/запись |
int | X | Чтение/запись |
int | Y | Чтение/запись |
int | Width | Чтение/запись |
int | Height | Чтение/запись |
int | Left | Чтение |
int | Top | Чтение |
int | Right | Чтение |
int | Bottom | Чтение |
bool | IsEmpty | Чтение |
Свойство Left возвращает то же значение, что и X, а Тор — то же значение, что и Y. Свойство Right возвращает значение суммы X и Width, a Bottom — значение суммы Y и Height, даже если Width и Height отрицательны. Иначе говоря, Left может быть больше, чем Right, a Bottom — больше, чем Тор.
Единственными операторами, перегруженными в Rectangle, являются операторы равенства (==) и неравенства (!=). Кроме того, в Rectangle реализован метод Equals. Хотя сложение и вычитание не допускаются в структурах Rectangle, есть методы, позволяющие по-разному манипулировать структурами Rectangle или создавать новые структуры Rectangle из существующих.
Для Windows-программистов, привыкших думать в терминологии «левый, верхний — правый, нижний» есть статический метод, создающий Rectangle из двух координат:
Методы Rectangle (выборочно)
static Rectangle FromLTRB(int xLeft, int yTop, int xRight, int yBottom) |
Так как это статический метод, перед его именем должно стоять имя структуры. Метод возвращает новый объект Rectangle. Вызов:
rect = Rectangle.FromLTRB(x1, у1, x2, y2);
равносилен:
rect = new Rectangle(x1, y1, x2 - x1, y2 - y1);
Методы Offset и Inflate манипулируют структурой Rectangle и компенсируют отсутствие в ней операторов сложения и вычитания:
Методы Rectangle (выборочно)
void Offset(int x, int y) |
void Offset(Point pt) |
void Inflate(int x, int y) |
void Inflate(Size size) |
Метод Offset сдвигает прямоугольник в другое положение. Вызов метода
rect.Offset(23, -46);
равносилен:
rect.X += 23; rect.Y += -46;
или
rect.Location += new Size(23, -46);
Перегруженная версия метода Offset принимает параметр Point (наверное, было бы правильнее использовать тип Size):
rect.Offset(pt);
Этот вызов равносилен
rect.X += pt.X; rect.Y += pt.Y;
или
rect.Location += (Size)pt;
Метод Inflate воздействует на расположение и размер Rectangle:
rect.Inflate(x, у);
идентичен:
rect.X -= х; rect.Y -= у; rect.Width += 2 * х; rect.Height += 2 * у;
Таким образом, прямоугольник становится большим (или меньшим, если параметр отрицателен) во всех направлениях. Центр прямоугольника остается там же. Перегруженная версия Inflate использует объект Size для указания параметров растяжения по двум осям. Статическая версия создает новый растянутый объект Rectangle из имеющегося объекта Rectangle.
Следующие методы выполняют объединение и пересечение пары объектов Rectangle:
Методы Rectangle (выборочно)
static Rectangle Union(Rectangle rect1, Rectangle rect2) |
static Rectangle Intersect(Rectangle rect1, Rectangle rect2) |
void Intersect(Rectangle rect) |
У метода Intersect имеется перегруженная версия, не являющаяся статической. Она используется так:
rect1.Intersect(rect2);
Это выражение равносильно:
rect1 = Rectangle.Intersect(rect1, rect2);
Остальные уникальные методы Rectangle возвращают логические значения:
Методы Rectangle (выборочно)
bool Contains(Point) |
bool Contains(int x, int y) |
bool Contains(Rectangle rect) |
bool IntersectsWith(Rectangle rect) |
И, наконец, и в Rectangle, и в RectangleF очень удобно переопределяется ToString. Этот метод возвращает такую строку:
{X=12,Y=5,Width=30,Height=10}
netlib.narod.ru | < Назад | Оглавление | Далее > |