C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Урок 14. Класс CRect для прямоугольников подробнее / Уроки C++ .NET / Visual C++ .NET

Visual C++.NET
Урок 14. Класс CRect для прямоугольников подробнее

Класс CRect представляет из себя класс для работы с прямоугольником.

Задать прямоугольник можно, например, следующим конструктором:

CRect r(10, 20, 40, 40);

Параметры тут - это координаты левого верхнего и правого нижнего углов прямоугольника. Это же самое можно сделать путем вызова метода SetRect:

r.SetRect(40, 40, 10, 20);

Если вы не уверены, что первый параметр меньше третьего, а второй - четвертого, то прямоугольник можно привести к нормальному виду путем вызова метода NormalizeRect():

r.NormalizeRect();

После этого все встанет на свои места - левая сторона будет левее правой, в верхняя - выше нижней.

Определить ширину и высоту прямоугольника можно через вызов методов Width и Height. Разумеется, перед этим прямоугольник надо нормализовать (т. е. вызвать метод NormalizeRect).

Прямоугольник можно перемещать методами MoveToXY, MoveToX и MoveToY:

r.MoveToXY(100, 50);
r.MoveToX(80);

При вызове методов MoveTo... размеры прямоугольника не изменяются. Этого эффекта (сдвига) можно добиться вызовом метода OffsetRect. Параметры у него такие же, как и у MoveToXY.

Узнать, принадлежит ли некоторая точка прямоугольнику, можно через метод PtInRect типа BOOL:

CPoint pt(30, 30);
if(r.PtInRect(pt)){
    ...

Естественно, что метод PtInRect возвращает TRUE, если передаваемая в качестве параметра точка принадлежит прямоугольнику и FALSE в противоположном случае.

Определить, не является ли прямоугольник вырожденным (т. е. не равна ли одна из его сторон нулю) можно методом IsRectEmpty:

r.IsRectEmpty();

Для находжения пересечения 2 прямоугольников служит меттод IntersectRect. Он принимает в качестве параметров 2 прямоугольника и возвращает опять прямоугольник, который и является пересечением первых двух. Вот пример:

    ...
    CRect r1, r2, r;
    r1.SetRect(10, 10, 40, 40);
    r2.SetRect(20, 0, 50, 20);
    r.IntersectRect(r1, r2);
    pDC->Rectangle(r); //Выведется прямоугольник (20, 10), (40, 20).
    ...