Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
51
Добавлен:
02.04.2015
Размер:
8.79 Mб
Скачать
    1. Спэны – сложные кривые

Если кривая, которую Вы хотите нарисовать, не может быть выражена как какая-либо другая кривая, поддерживаемая Photon'овским микроGUI, Вы можете нарисовать её как набор спэнов, вызвав функцию PgDrawSpan(). Эта функция в качестве одного из своих аргументов получает массив записей типа PgSpan_t.

Членами такой записи являются:

short x1

Начальная позиция по x1

short x2

Конечная позиция по x2

short y

Позиция по y

      1. Линии, пиксели и массивы пикселей

Линии и пиксели рисуются с использованием текущего состояния черты (цвет, толщина и пр.). Примитивами рисования являются:

PgDrawBezier(), PgDrawBeziermx()

Рисование очерченных и/или заполненных кривых Безье

PgDrawGrid()

Рисование сетки

PgDrawLine(), PgDrawILine()

Рисование одинарной линии

PgDrawPixel(), PgDrawIPixel()

Рисование одной точки

PgDrawPixelArray(), PgDrawPixelArraymx()

Рисование множества точек

PgDrawTrend(), PgDrawTrendmx()

Рисование направленного графика (trend graph)

В следующем примере рисуются красная, зелёная и синяя линии:

void DrawLines( void ) {

PgSetStrokeColor( Pg_RED );

PgDrawILine( 8, 8, 152, 8 );

PgSetStrokeColor( Pg_GREEN );

PgDrawILine( 8, 8, 152, 60 );

PgSetStrokeColor( Pg_BLUE );

PgDrawILine( 8, 8, 152, 112 );

}

              1. Линии, созданные примитивами рисования

    1. Текст

В заисимости от Ваших потребностей можно использовать различные процедуры рисования текста:

PgDrawMultiTextArea()

Рисование в некой области многострочного текста

PgDrawString(), PgDrawStringmx()

Рисование строки символов

PgDrawText(), PgDrawTextmx()

Рисование текста

PgDrawTextArea()

Рисование текста внутри некой области

PgDrawTextChars()

Рисование заданного количества текстовых символов

PgExtentMultiText()

Вычисление пространства, занимаемого многострочной текстовой строкой

PgExtentText()

Вычисление пространства, занимаемого строкой текста

Текст рисуется с использованием текущих значений текстовых атрибутов; более подробно см. в разделе "Текстовые атрибуты" выше. Если Вы устанавливаете flags в значение Pg_BACK_FILL, пространство, занимаемое текстом, заполняется в соответствии с текущими атрибутами заполнения (см. "Атрибуты заполнения"). Если Вы задали подчёркивание с помощью PgSetUnderline(), подчёркивание рисуется под текстом и вверху фоновой заливки.

Например, чтобы напечатать чёрный текст 18-пунктовым шрифтом Helvetica:

void DrawSimpleText( void ) {

char *s = "Hello World!";

PhPoint_t p = { 8, 30 };

char Helvetica18[MAX_FONT_TAG];

if (PfGenerateFontName("Helvetica", 0, 18, Helvetica18) == NULL) {

perror("Невозможно сгенерировать имя шрифта ");

}

else { PgSetFont( Helvetica18 ); }

PgSetTextColor( Pg_BLACK );

PgDrawText( s, strlen( s ), &p, 0 );

}

Чтобы напечатать чёрный текст на голубом фоне:

void DrawBackFillText( void ) {

char *s = "Hello World!";

PhPoint_t p = { 8, 30 };

char Helvetica18[MAX_FONT_TAG];

if (PfGenerateFontName("Helvetica", 0, 18, Helvetica18) == NULL) {

perror("Невозможно сгенерировать имя шрифта");

}

else { PgSetFont( Helvetica18 ); }

PgSetTextColor( Pg_BLACK );

PgSetFillColor( Pg_CYAN );

PgDrawText( s, strlen( s ), &p, Pg_BACK_FILL );

}

Чтобы напечатать чёрный текст с красным подчёркиванием:

void DrawUnderlineText( void ) {

char *s = "Hello World!";

PhPoint_t p = { 8, 30 };

char Helvetica18[MAX_FONT_TAG];

if (PfGenerateFontName("Helvetica", 0, 18, Helvetica18) == NULL) {

perror("Невозможно сгенерировать имя шрифта");

}

else { PgSetFont( Helvetica18 ); }

PgSetTextColor( Pg_BLACK );

PgSetUnderline( Pg_RED, Pg_TRANSPARENT, 0 );

PgDrawText( s, strlen( s ), &p, 0 );

PgSetUnderline( Pg_TRANSPARENT, Pg_TRANSPARENT, 0 );

}

Чтобы напечатать чёрный текст с красным подчёркиванием на голубом фоне:

void DrawBackFillUnderlineText( void ) {

char *s = "Hello World!";

PhPoint_t p = { 8, 30 };

char Helvetica18[MAX_FONT_TAG];

if (PfGenerateFontName("Helvetica", 0, 18, Helvetica18) == NULL) {

perror("Невозможно сгенерировать имя шрифта");

}

else { PgSetFont( Helvetica18 ); }

PgSetTextColor( Pg_BLACK );

PgSetFillColor( Pg_CYAN );

PgSetUnderline( Pg_RED, Pg_TRANSPARENT, 0 );

PgDrawText( s, strlen( s ), &p, Pg_BACK_FILL );

PgSetUnderline( Pg_TRANSPARENT, Pg_TRANSPARENT, 0 );

}

              1. Тексты, созданные примитивами рисования

Соседние файлы в папке Литература