netlib.narod.ru< Назад | Оглавление | Далее >

Прямоугольник — это точка и размер

Структура Rectangle определяет прямоугольник, как комбинацию структур Point и Size. Идея в том, что Point определяет расположение левого верхнего угла прямоугольника, a Size — ширину и высоту этого прямоугольника. Это не значит, что его ширина и высота обязательно должны быть положительными числами. Сама структура Rectangle не накладывает таких ограничений. Однако в главах 4 и 5 вы увидите, что структура Rectangle используется в некоторых функциях рисования, и этим функциям нужны положительные ширина и высота. У структуры Rectangle два конструктора:


Конструкторы Rectangle



Rectangle(Point pt, Size size)
Rectangle(int x, int y, int width, int height)


Ветераны программирования для Windows, будьте бдительны используя последний конструктор и в тех случаях, когда прямоугольник задается четырьмя числами: вторые два числа — это не координаты нижнего правого угла прямоугольника!

Вот конструкторы структуры RectangleF:


Конструкторы RectangleF



RectangleF(PointF ptf, SizeF sizef)
RectangleF(float x, float y, float width, float height)


Легко заметить, что конструкторы для структур Rectangle и RectangleF одинаковы во всем, кроме типов данных.

Фактически в целом реализации структур Rectangle и RectangleF до того похожи, что можно поклясться, что при их создании использовался какой-то шаблон. Помимо типов данных, единственное различие в том, что в структуре RectangleF определяется преобразование из Rectangle в RectangleF, в то время как в структуре Rectangle определены три статических (и уже знакомых вам) метода, позволяющих выполнять преобразование из RectangleF в Rectangle:


Статические методы Rectangle (выборочно)



Rectangle Round(RectangleF rectf)
Rectangle Truncate(RectangleF rectf)
Rectangle Ceiling(RectangleF rectf)


С этого момента я буду говорить только о структуре Rectangle, но все сказанное мной будет применимо и к RectangleF. Типы данных, связанные с RectangleF, — это, конечно, float, PointF и SizeF, а не int, Point и Size.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz