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

Библиотеки Photon'а включают группу функций примитивов, которые Вы можете использовать для рисования кривых, включая:

  • прямоугольники

  • прямоугольники со скруглёнными углами

  • прямоугольники с фасками, прямоугольники и стрелки

  • многоугольники

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

  • спэны (spans) – сложные кривые

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

  • Создайте виджет PtRaw и вызовите примитивы в его функции прорисовки. См. раздел "Виджет PtRaw" выше в этой главе.

или

  • Используйте соответствующий графический виджет. Более полная информация – в описании PtGraphic в "Справочнике виджетов Photon'а".

Пользуясь различными флагами примитива, Вы можете легко нарисовать контур (черта), нарисовать заполнение "внутри" (заполнение), или нарисовать сразу и то и другое как заполненный контур. Использованы атрибуты заполнения и черты. Более подробно см. "Атрибуты рисования" выше в этой главе.

Чтобы:

Установите флаги в:

Заполнить примитив, используя текущие атрибуты заполнения

Pg_Draw_FILL

Очертить контур примитива, используя текущие атрибуты черты

Pg_DRAW_STROKE

Заполнить примитив и очертить его контур, используя текущие атрибуты заполнения и черты

Pg_DRAW_FILL_STROKE

mx-версии этих функций размещают адрес примитива в буфере рисования пространства данных Вашего приложения. Когда буфер рисования сбрасывается, примитив копируется в графический драйвер. Не-mx-версии копируют в буфер рисования сам примитив.

      1. Прямоугольники

Вы можете рисовать прямоугольники, используя текущие атрибуты рисования, путём вызова функций PgDrawIRect() или PgDrawRect().

Функция PgDrawRect() использует структуру PhRect_t (см. "Справочник библиотечных функций Photon'а" для координат прямоугольника, тогда как PgDrawIRect() позволяет Вам задавать координаты отдельно. Используйте тот метод, который хотите.

В следующем примере рисуется прямоугольник, который заполнен, но не очерчен (т.е. он не имеет контура):

void DrawFillRect( void ) {

PgSetFillColor( Pg_CYAN );

PgDrawIRect( 8, 8, 152, 112, Pg_DRAW_FILL );

}

Если хотите, можете вместо этого использовать функцию PgDrawRect():

void DrawFillRect( void ) {

PhRect_t rect = { {8, 8}, {152, 112} };

PgSetFillColor( Pg_CYAN );

PgDrawRect( &rect, Pg_DRAW_FILL );

}

В следующем примере рисуется оконтуренный незаполненный прямоугольник:

void DrawStrokeRect( void ) {

PgSetStrokeColor( Pg_BLACK );

PgDrawIRect( 8, 8, 152, 112, Pg_DRAW_STROKE );

}

А здесь рисуется оконтуренный заполненный прямоугольник:

void DrawFillStrokeRect( void ) {

PgSetFillColor( Pg_CYAN );

PgSetStrokeColor( Pg_BLACK );

PgDrawIRect( 8, 8, 152, 112, Pg_DRAW_FILL_STROKE );

}

              1. Заполненные и оконтуренные прямоугольники

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