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

Дуги, круги, хорды и сектора

Функция PgDrawArd() может использоваться для рисования:

Чтобы нарисовать эллипс, можно также вызвать функцию PgDrawEllipse(). Начальный и конечный углы сегмента дуги задаются в бинарных градусах (bi-grads) – полный круг соответствует 65536 бинарным градусам (0х10000).

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

void DrawFullCurves( void ) {

PhPoint_t circle_center = { 150, 150 }, ellipse_center = { 150, 300 };

PhPoint_t circle_radii = { 100, 100 }, ellipse_radii = { 100, 50 };

/* Рисование белого, незаполненного круга. */

PgSetStrokeColor( Pg_WHITE );

PgDrawArc( &circle_center, &circle_radii, 0, 0, Pg_DRAW_STROKE | Pg_ARC );

/* Рисование чёрного эллипса с белым контуром. */

PgSetFillColor( Pg_BLACK );

PgDrawArc( &ellipse_center, &ellipse_radii, 0, 0, Pg_DRAW_FILL_STROKE | Pg_ARC );

}

Чтобы нарисовать сегмент (кривую, у которой крайние точки соединены прямой линией), добавьте к параметру flags значение Pg_ARC_CHORD. Например:

void DrawChord( void ) {

PhPoint_t center = { 150, 150 };

PhPoint_t radii = { 100, 50 };

/* Рисование чёрного эллиптического сегмента с белым контуром.

Дуга рисуется от 0 градусов до 45градусов (0x2000 биградусов). */

PgSetStrokeColor( Pg_WHITE );

PgSetFillColor( Pg_BLACK );

PgDrawArc( &center, &radii, 0, 0x2000, Pg_DRAW_FILL_STROKE | Pg_ARC_CHORD );

}

Сходным образом, чтобы нарисовать сектор или дугу, добавьте к flags значения Pg_ARC_PIE или Pg_ARC. Например:

void DrawPieCurve( void ) {

PhPoint_t pie_center = { 150, 150 },

arc_center = { 150, 300 };

PhPoint_t pie_radii = { 100, 50 },

arc_radii = { 50, 100 };

/* Рисование чёрного эллиптического сектора с белым контуром. */

PgSetStrokeColor( Pg_WHITE );

PgSetFillColor( Pg_BLACK );

PgDrawArc( &pie_center, &pie_radii, 0, 0x2000, Pg_DRAW_FILL_STROKE | Pg_ARC_PIE );

/* Рисование чёрной дуги. */

PgSetStrokeColor( Pg_BLACK );

PgDrawArc( &arc_center, &arc_radii, 0, 0x2000, Pg_DRAW_STROKE | Pg_ARC );

}

              1. Заполненные и очерченные дуги