Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
07-04-2014_22-36-39 / Графика 1-студентам.doc
Скачиваний:
22
Добавлен:
10.02.2015
Размер:
375.81 Кб
Скачать

Шрифт (font)

Для вывода текстовой информации (строк) в графическом режиме предназначен объект шрифт (Font). При создании шрифта с помощью конструктора необходимо задать следующие параметры

Font( const FontFamily *family,REAL emSize, INT style, Unit unit);

family - указатель на объект-семейство шрифтов, задающий тип шрифта

emSize – размер шрифта (единица измерения задается четвертым параметром)

style – стиль шрифта

unit - единицы измерения размеров шрифта

Шрифты с одинаковым характером рисунка, но разными начертаниями группируются в интерфейсе GDI+ в семейства шрифтов. Например, семейство шрифтов Arial содержит следующие шрифты:

  • Arial Regular

  • Arial Bold

  • Arial Italic

  • Arial Bold Italic

Параметр – стиль может принимать одно из следующих значений, указанных в таблице

Regular

Стандартный текст.

Bold

Текст, выделенный жирным шрифтом.

Italic

Текст, выделенный курсивом.

Underline

Текст, выделенный подчеркиванием.

Strikeout

Текст с линией посредине.

   

Параметр, задающий единицу измерения размера шрифта, может принимать одно из следующих значений, указанных в таблице

World

Задает в качестве единицы измерения единицу мировой системы координат.

Display

Задает единицу измерения устройства отображения. Обычно это точки для видеодисплеев и 1/100 дюйма для принтеров.

Pixel

Задает в качестве единицы измерения точку устройства.

Point

Задает в качестве единицы измерения пункт (1/72 дюйма).

Inch

Задает в качестве единицы измерения дюйм.

Document

Задает в качестве единицы измерения единицу документа (1/300 дюйма).

Millimeter

Задает в качестве единицы измерения миллиметр

Пример создания объекта - шрифта

System::Drawing::Font ^ft= gcnew System::Drawing::Font( FontFamily::GenericMonospace,50,FontStyle::Italic, GraphicsUnit::Point);

МЕТОДЫ ВЫВОДА ПРИМИТИВОВ

(методы класса Graphics)

Графический объект имеет следующие основные методы вывода геометрических объектов:

Рисование дуги эллипса

DrawArc(const Pen *pen,INT x,INT y, INT width,INT height,    REAL startAngle,REAL sweepAngle); pen – указатель на перо, xy – координаты верхнего левого угла прямоугольника, в который вписана дуга эллипса, widthheight – оси эллипса (ширина и высота прямоугольника, описанного вокруг дуги,  startAngle – начальный угол дуги (отсчитывается от оси абсцисс по часовой стрелке, sweepAngle – величина дуги (в градусах).

Рисование кривой Безье

DrawBezier( const Pen *pen,INT x1,INT y1,INT x2,INT y2,INT x3,

Int y3,int x4,int y4); x1,y1 - координаты начальной точки кривой, x2,y2, x3,y3 – координаты первой и второй управляющих точек, x4,y4 – координаты конечной точки кривой.

Рисование многозвенной кривой Безье

DrawBeziers(const Pen *pen,const PointF *points,INT count);   points – указатель на массив элементов - точек типа PointF (массив хранит координаты начальной, двух управляющих точек и конечной, поскольку конечная точка очередного звена является начальной для следующего звена, то она указывается один раз. Таким образом, для всех звеньев, кроме начального, указываются две управляющие точки и одна конечная).

Рисование замкнутой сплайновой кривой

DrawClosedCurve(const Pen *pen,const Point *points); points – указатель на массив элементов - точек типа PointF (массив хранит координаты точек кривой).

Рисование незамкнутой кривой

DrawCurve( const Pen *pen,const PointF *points); points – указатель на массив элементов - точек типа PointF (массив хранит координаты точек кривой).

Рисование эллипса

DrawEllipse(const Pen *pen,const RectangleF &rect); rect - структура из четырех членов,  задающих   параметры эллипса – координаты верхнего левого угла описанного прямоугольника и две стороны этого прямоугольника (например, RectangleF rt=RectangleF(250,20,200,100);).

Другой способ обращения к методу DrawEllipse(const Pen *pen,float x,float y,float width,float height); или DrawEllipse(const Pen *pen,int x,int y,int width,int height);

(x,y,width,height задают те же параметры описанного около эллипса прямоугольника, могут быть как целого, так и действительного типа).

Рисование отрезка прямой

DrawLine(const Pen *pen,const Point &pt1,const Point &pt2);      pt1, pt2 – параметры, задающие координаты начальной и конечной точек отрезка, Point – класс точка, одноименный конструктор позволяет инициализировать объект, задавая координаты точки: Point p1=Point(700,20); Другой способ обращения к методу

DrawLine(const Pen *pen,float x1,float y1,float x2,float y2); x1,y1,x2,y2 – координаты концов отрезка (значения целого или действительного типа). Рисование ломаной линии    

DrawLines( const Pen *pen,const PointF *points);  points – указатель на массив элементов - точек типа PointF (массив хранит координаты точек кривой).

Рисование сектора эллипса    DrawPie(const Pen *pen,float x,float y,float width,float height,

float startAngle,float sweepAngle); параметры имеют тот же смысл, что и параметры у метода рисования дуги. Параметры могут задаваться и другим способом, как у эллипса.

Рисование многоугольника      DrawPolygon(const Pen *pen,const PointF *points); points – указатель на массив элементов - точек типа PointF (массив хранит координаты точек кривой)

Рисование прямоугольника DrawRectangle( const Pen *pen,const Rect &rect);  или

 DrawRectangle( const Pen *pen,foat x,float y,float width,float height); параметры имеют тот же смысл, что и параметры метода рисования эллипса  Рисование нескольких прямоугольников

DrawRectangles(const Pen *pen,const Rect *rects);

Rects – указатель на массив структур, задающих параметры каждого прямоугольника. Вывод строки символов     DrawString(const WCHAR *string,INT length,const Font *font,

    const PointF &origin,const StringFormat *stringFormat,

    const Brush *brush);

string указатель на строку символов, length – количество выводимых символов, font – указатель на объект – шрифт, задающий имя шрифта, его размер и стиль, origin – ссылка на объект-точку, задающую начальную точку вывода строки, stringFormat – указатель на объект, задающий формат вывода строки, brush – указатель на кисть, заполняющую строку.

Параметр stringFormat указывает сведения об отображении и размещении строк текста.

Конструктор StringFormat Инициализирует новый объект StringFormat с заданным перечислением StringFormatFlags или из указанного существующего объекта StringFormat. В таблице указаны возможные значения перечисления.

DirectionRightToLeft

Отображает текст справа налево.

DirectionVertical

Текст выравнивается по вертикали.

FitBlackBox

Частям символов разрешается выступать за границы прямоугольника строки. По умолчанию положение символов изменяется во избежание какого-либо выступа.

DisplayFormatControl

Управляющие символы, такие как метка слева направо, показываются в выходных данных с помощью характерного глифа.

NoFontFallback

Переход к альтернативным шрифтам для знаков, не поддерживаемых в требуемом шрифте, отключен. Все недостающие символы отображаются с помощью глифа отсутствия шрифтов, обычно пустого квадрата.

MeasureTrailingSpaces

Вставляет замыкающий пробел в конце каждой строки. По умолчанию ограничивающий прямоугольник, возвращаемый методом MeasureString, исключает пробелы в конце каждой строки. Установите этот флаг, чтобы включить в результат измерения эти пробелы.

NoWrap

Автоматический перенос на новую строку при форматировании в прямоугольнике отключен. Этот флаг означает передачу точки вместо прямоугольника или нулевую длину строки указанного прямоугольника.

LineLimit

В прямоугольнике форматирования размещаются только целые строки. По умолчанию форматирование продолжается либо до конца текста, либо до того места, после которого в результате усечения отсутствуют видимые строки. Следует иметь в виду, что стандартные параметры разрешают частично скрывать последнюю строку в прямоугольнике форматирования, высота которого не кратна высоте строки. Чтобы отображались только целые строки, задайте это значение, не забыв предусмотреть, чтобы высота прямоугольника форматирования была не меньше высоты одной строки.

NoClip

Разрешается отображать выступающие части глифов и текст, выходящий за пределы прямоугольной зоны форматирования. По умолчанию весь текст и части глифов, выступающие за границы прямоугольника форматирования

Пример создания объекта, задающего формат вывода текста:

StringFormat ^format=gcnew StringFormat(StringFormatFlags::DirectionVertical);

Можно нарисовать ранее рассмотренные геометрические объекты, у которых внутренняя область будет заполнена текущей кистью. Для этого предназначены следующие методы

FillClosedCurve(const Brush *brush, const Point *points); 

FillEllipse(const Brush *brush, const RectangleF &rect); FillPolygon(const Brush *brush, const PointF *points); FillRectangle(const Brush *brush, const Rect *rects); FillRectangles(const Brush *brush, const Rect *rects); 

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

При создании приложения на форму следует нанести две кнопки, при щелчке на первой будет выводиться требуемое изображение, при щелчке на второй будет завершаться выполнение приложения. Также целесообразно инициализировать событие Form1_ResizeEnd, обработка которого будет заключаться в обращении к методу обработки события – щелчок на первой кнопке. В этом случае при изменении размеров формы будет происходить пересчет размеров рисунка с учетом новых размеров формы и его построение. Следует обратить внимание на то, что все размеры рисунка вычисляются в программе в зависимости от размеров формы. Целесообразно инициализировать событие Form1_Load и создать обработчик этого события, чтобы учесть размеры текущей формы при выводе кнопок.

Соседние файлы в папке 07-04-2014_22-36-39