Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 484
Эндрю Троелсен
Типы Rectangle, подобно Point, оказываются полезными во многих приложениях (и особенно в GUI-приложениях). Одним из наиболее полезных методов типа Rectangle является метод Contains(). Этот метод позволяет выяснить, находится ли данный тип Point или Rectangle в рамках границ некоторого другого объекта. Позже в этой же главе вы увидите, как использовать этот метод для проверки попадания в область GDI-изображений. А пока что рассмотрите следующий простой пример.
static void Main(string[] args) {
…
// Вначале Point находится вне прямоугольника.
Rectangle r1 = new Rectangle(0, 0, 100, 100);
Point pt1 = new Point(101, 101);
if (r1.Contains(pt3)) Console.WriteLine("Point находится внутри прямоугольника!");
else Console.WriteLine("Point находится вне прямоугольника!");
// Теперь поместим Point в прямоугольник.
pt3.X
pt3.Y = 30;
if (r1.Contains(pt3)) Console.WriteLine("Point находится внутри прямоугольника!");
else Console.WriteLine("Point находится вне прямоугольника!");
Console.ReadLine();
}
Класс Region
Тип Region представляет внутреннюю часть геометрической фигуры. С учетом этого становится ясно, почему конструкторы класса Region требуют, чтобы вы предоставили им на вход некоторый уже существующий геометрический шаблон. Предположим, например, что вы создали прямоугольник размером 100×100 пикселей. Чтобы получить доступ к внутренней области прямоугольника, вы можете написать следующее.
// Получение внутренней части прямоугольника.
Rectangle r = new Rectangle(0, 0, 100, 100);
Region rgn = new Region(r);
Имея внутреннюю часть фигуры, вы можете манипулировать ею с использованием различных членов, наподобие следующих:
• Complement() – изменяет данный объект Region на часть указанного графического объекта, не пересекающуюся с данным объектом Region;
• Exclude() – изменяет данный объект Region на ту его часть, которая не пересекается с указанным графическим объектом;
• GetBounds() – возвращает Rectangle(F), который представляет прямоугольный регион, ограничивающий данный объект Region;
• Intersect() – изменяет данный объект Region на его пересечение с указанным графическим объектом:
• Transform() – трансформирует данный объект Region с помощью указанного объекта Matrix;
• Union() – изменяет данный объект Region на его объединение с указанным графическим объектом;
• Translate() – сдвигает координаты данного объекта Region на указанную величину.
Надеюсь, что вы получили общее представление об этих координатных примитивах. Если же вам нужны подробности, обратитесь к документации .NET Framework 2.0 SDK.
Замечание. Типы Size и SizeF заслуживают небольшого дополнительного комментария. Каждый из этих типов определяет свойства Height (высота) и Width (ширина), а также набор перегруженных операций.
Исходный код. Проект UtilTypes размещен в подкаталоге, соответствующем главе 20.
Класс Graphics
Класс System.Drawing.Graphics – это "вход" в функциональные возможности визуализации GDI+. Этот класс не только представляет поверхность, на которой вы хотите разместить изображение (например, поверхность формы, поверхность элемента управления или область в памяти), но определяет также десятки членов, которые позволяют отображать текст, изображения (пиктограммы, точечные рисунки и т.д.) и самые разные геометрические формы. Частичный список членов данного класса представлен в табл. 20.3.