Тип Point (PointF)

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

  • +, -, ==,!= — тип Point перегружает различные операции C#;
  • X, Y — эти члены предоставляют доступ к лежащим в основе Point значениям (x, y);
  • IsEmpty — этот член возвращает true, если x и y равны 0.

Для иллюстрации работы со служебными типами GDI + рассмотрим пример консольного приложения (по имени UtilTupes), которое использует тип 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("Points are the same");

else

WriteLine("Different points");

// Изменить в pt2 значение X.

pt2.X = 4000;

// Теперь показать каждое значение X.

Console.WriteLine("First point: {0} ", pt);

Console.WriteLine("Second point: {0} ", pt2);

Console.ReadLine();

}

}

}

Тип Rectangle (RectangleF)

Тип Rectangle, как и Point, полезен во многих приложениях (как на основе GDI, так и нет). Один из наиболее полезных методов типа Rectangle — это Contains (). Этот метод позволяет определять, находится ли данный экземпляр Point или Rectangle в пределах текущих границ другого объекта. Далее в этой главе вы увидите применение этого метода для выполнения проверки попадания на изображения GDI +. А пока рассмотрим простой пример:

static void Main(string[] args)

{

...

// Point изначально вне границ прямоугольника.

Rectangle r1 = new Rectangle(0, 0, 100, 100);

Point pt3 = new Point(101, 101);

if(r1.Contains(pt3))

Console.WriteLine("Point is within the rect!");

else

Console.WriteLine("Point is not within the rect!");

// Теперь поместим точку внутрь прямоугольника.

pt3.X = 50;

pt3.Y = 30;

if(r1.Contains(pt3))

Console.WriteLine("Point is within the rect!"); // внутри

else

Console.WriteLine("Point is not within the rect!"); // не внутри

Console.ReadLine();

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: