Простейшие графические возможности
В пространстве имен System.Drawing − определены основные структуры для представления:
· точки (координат) − Point и PointF
· размера − Size и SizeF
· прямоугольных областей − Rectangle и RectangleF.
Буква F в конце названия структуры означает, что, в отличие от обычных структур (без F), поля структуры имеют не целочисленные значения, а значения вещественного типа (float).
Структура Size
Структура Size предназначена для хранения ширины и высоты объекта и имеет, для этого, соответствующие открытые свойства Width и Height, доступные как для записи, так и для чтения. При создании объекта Size, с помощью конструктора по умолчанию:
Size sz = new Size();
свойства Width и Height устанавливаются в ноль.
Изменить значения свойств в последствии можно, например, следующим образом:
sz.Width = 40;
sz.Height = 60;
Структура содержит два конструктора с аргументами:
public Size(int, int);
public Size(Point);
Конструкторы с аргументами позволяют, в момент создания, инициализировать разные экземпляры структуры по-разному:
|
|
Size sz1= new Size(10,20); // sz1.Width = 10, sz1.Height = 20 Size sz2 = new Size(15,50); // sz2.Width = 15, sz2.Height = 50
Структура Point
Структура Point содержит открытые свойства X и Y целого типа, доступные, как для записи, так и для чтения.
Для создания точки “pt” можно использовать конструктор по умолчанию:
Point pt = new Point();
Конструктор по умолчанию при создании точки обнуляет значения свойств X и Y.
В дальнейшем координаты точки можно изменить, например, следующим образом:
pt.X =25;
pt.Y=75;
Инициализировать новую точку класса Point, можно используя,
конструкторы с аргументами:
public Point(Size);
public Point(int, int);
Например:
Point pt1 = new Point(10,20); // pt1.X =10, pt1.Y=20
Size sz = new Size(27,45);
Point pt2 = new Point(sz); // pt2.X=27, pt2.Y=45
Открытый метод структуры:
public void Offset( int dx, int dy ); изменяет текущие координаты точки по формулам:X=X+dx и Y=Y+dy;
Структура Rectangle
Структура предназначена для определения координат и размера прямоугольника. Структура содержит открытые свойства, часть из которых доступна только для чтения, а часть, как для чтения, так и для записи.
В структуре определены два конструктора с аргументами:
public Rectangle(
int x, // x-координата левого верхнего угла прямоугольника
int y, // y-координата левого верхнего угла прямоугольника
int width, // ширина прямоугольника
int height // высота прямоугольника
);
public Rectangle(
Point location, // координата левого верхнего угла прямоугольника
Size size // размер прямоугольника
);
С помощью этих конструкторов можно определять размеры и местоположение прямоугольников при их создании:
Point pt = new Point(10,15);
Size sz = new Size (50,70);
Rectangle rct = new Rectangle(pt,sz);
|
|
Rectangle rect = new Rectangle(20,20,50,30);
Структура Rectangle содержит ряд доступных методов. Рассмотрим некоторые из них.
Метод:
public void Intersect(Rectangle);
Возвращает структуру, которая описывает прямоугольник, представляющий пересечение двух прямоугольников. Если не имеется никакого пересечения, все свойства структуры обнуляются.
Например:
Rectangle rect,rct;
rect = new Rectangle(20,25,50,55);
rct = new Rectangle(10,10,30,40);
rect.Intersect(rct);
выполнение, приведенного фрагмента кода установит значения свойства структуры прямоугольника rect следующим образом:
X=20, Y=25, Width=20, Height=25.
Метод:
public static Rectangle Union(Rectangle a, Rectangle b);
Возвращает структуру, описывающий минимальный по размерам прямоугольник, включающий в себя прямоугольники a и b.
Методы public void Offset(Point pos) и public void Offset(int x, int y) смещают координаты левой верхней точки прямоугольника по обеим осям на величину, задаваемую параметрами методов.
Представление цвета
Представление цвета осуществляется с помощью экземпляров структуры System.Drawing.Color.
Для задания цвета используется статический метод класса:
public static Color.FromArgb(int red, int green, int blue);
Параметры метода red, green и blue задают интенсивность красной, зеленой и синей составляющей цвета. Значение каждой компоненты цвета может изменяться в диапазоне от 0 до 255. Это позволяет отобразить 224 различных цветов.
Для задания цвета можно также использовать один из перегруженных методов FromArgb:
public static Color FromArgb(int alpha, Color cr);
public static Color FromArgb(int alpha, int red, int green, int blue);
Дополнительный параметр alpha задает степень прозрачности цвета. Чем меньше это число, тем меньше насыщенность цвета и тем более прозрачным является этот цвет. Значение параметра alpha может изменяться в диапазоне от 0 до 255. Значение 0 определяет полностью прозрачный (бесцветный), а значение 255 − полностью насыщенный (непрозрачный) цвет.
Структура Color содержит более 200 статических свойств, доступных только для чтения. Эти свойства задают именованные или, так называемые, Интернет − цвета, которые правильно воспроизводятся всеми WEB браузерами.
Например:
Color clr2 = Color.Beige; // бежевый
Color clr3 = Color.Magenta; // сиреневый
Color clr4 = Color.Orange; // оранжевый
Кисти и перья
Графические объекты рисуются с помощью перьев и кистей.
Сплошные кисти создаются как экземпляры класса System.Drawing.SolidBrush, например:
Brush br2 = new SolidBrush(Color.Magenta);
Brush br3 = new SolidBrush(Color.FromArgb(200,10,120));
Параметр color конструктора public SolidBrush(Color color)
класса SolidBrush задает цвет сплошной кисти.
В классе System.Drawing.Brushes определено большое количество статических свойств, возвращающих кисть Интернет цветов. Создание таких кистей выглядит следующим образом:
Brush brr = Brushes.Orange;
В классе System.Drawing.Drawing2D.HatchBrush определены штриховые кисти.
Конструкторы класса:
public HatchBrush(HatchStyle hatchstyle, Color foreColor, Color backColor);
public HatchBrush(HatchStyle hatchstyle, Color foreColor);
Параметры:
foreColor − цвет штриха кисти;
backColor − цвет фонового штриха кисти (по умолчанию − черный цвет);
hatchstyle − стиль штриховой кисти.
Существует большое количество доступных стилей, наиболее типичными являются:
Cross − решетчатая кисть;
DiagonalCross − диагональная решетчатая кисть;
Horizontal − горизонтальная штриховка;
Vertical − вертикальная штриховка.
Например, создание кисти с вертикальной штриховкой синего цвета и фоновым штрихом бежевого цвета будет выглядеть следующим образом:
Brush br1 = new HatchBrush(HatchStyle.Vertical,Color.Blue,Color.Beige);
Перья описываются классом System.Drawing.Pen.
Конструкторы класса:
public Pen(Color color);
public Pen(Color color, float width);
public Pen(Brush brush);
public Pen(Brush brush, float width);
Параметры:
color − цвет пера;
width − толщина пера;
brush −кисть.
Примеры создания перьев:
Pen pn = new Pen(Color. Magenta);
Pen pn1 = new Pen(Color.Orange,5);
|
|
Pen pn2 = new Pen(Brushes.Orange);
Pen pn3 = new Pen(Brushes.Magenta,10);
Pen pn4 = new Pen(Color.FromArgb(125,155, 0));
Pen pn5 = new Pen(Color.FromArgb(25,155,200),10);
В классе System.Drawing.Pens содержится множество статических свойств, описывающих перья с интернет цветом и толщиной в один пиксель. Создание таких перьев выглядит следующим образом:
Pen pn6 = Pens.Brown;
Pen pn7 = Pens.Magenta;