logo
Литература_1 / photon_old

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

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

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. Тексты, созданные примитивами рисования

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4