Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 483

Эндрю Троелсен

Для указания такой информации пространство имен System.Drawing определяет типы Point, Rectangle, Region и Size. Очевидно, что тип Point (точка) представляет координату (x, у). Типы Rectangle (прямоугольник) содержат пару точек, представляющих левый верхний и нижний правый угол прямоугольной области. Типы Size (размер) подобны Rectangle, но эта структура представляет конкретные размеры, используя длину и ширину. Наконец, типы Region (регион) предлагают способ представления непрямоугольных областей.

Члены-переменные, используемые типами Point, Rectangle, Region и Size, внутренне представлены целочисленными данными. Если вам потребуется более "тонкая" детализация, можете использовать, соответственно, типы PointF, RectangleF и SizeF, которые (как вы можете догадаться) отображаются в соответствующие значения с плавающим разделителем. Но, независимо от внутреннего представления, все эти типы имеют аналогичные множества членов, включая ряд перегруженных операторов.

Тип Point(F)

Первым утилитарным типом, о котором вам следует знать, является тип System.Drawing.Point(F). В отличие от иллюстративных типов Point, создававшихся в предыдущих главах, тип Point(F) GDI+ поддерживает целый ряд очень полезных членов, включая следующие:

• +, -, ==, != – перегруженные варианты различных C#-операций;

• X, Y – обеспечивают доступ к соответствующим внутренним значениям (х, у) типа Point;

• IsEmpty – возвращает true (истина), если x и у установлены равными 0.

Для иллюстрации работы с утилитарными типами GDI+ рассмотрите следующее консольное приложение (названное UtilTypes), в котором используется тип System.Drawing.Point (не забудьте установить ссылку на System.Drawing.dll).

using System;

using System.Drawing;

namespace UtilTypes {

 public class Program {

  static void Main(string[] args) {

   // Создание и смещение точки.

   Point pt = new Point(100, 72);

   Console.WriteLine(pt);

   pt.Offset(20, 20);

   Console.WriteLine(pt);

   // Перегруженные операции Point.

   Point pt2 = pt;

   if (pt == pt2) WriteLine ("Точки одинаковы");

   else WriteLine("Точки различны");

   // Изменение значения X для pt2.

   pt2.X = 4000;

   // Отображение каждого значения X.

   Console.WriteLine("Первая точка: {0} ", pt);

   Console.WriteLine("Вторая точка: {0} ", рt2);

   Console.ReadLine();

  }

 }

}

Тип Rectangle(F)