Установка способа заливки полигонов
#include <gf/gf.h>void gf_context_set_polyfill( gf_context_t context,int polyfill );
gf
Данная функция устанавливает способ заливки полигонов для последующих операций с указанным контекстом context. Параметр polyfill определяет способ рендеринга полигонов с заливкой. Если производится рисование заведомо простых выпуклых полигонов, то рендеринг можно ускорить, используя константу GF_CONTEXT_POLYFILL_CONVEX
.
По умолчанию все полигоны считаются самопересекающимися, к которым применяется четно-нечетный алгоритм GF_CONTEXT_POLYFILL_EVENODD
, который гласит: если область перекрывается нечетное количество раз, то она не заполняется. Другой способ посмотреть на это - провести горизонталь через многоугольник. Двигаясь по ней и пересекая первое ребро полигона, вы окажетесь внутри многоугольника; пересекая второе ребро вы окажетесь вне его:
Это правило можнт быть расширено на более сложный случай:
Константа GF_CONTEXT_POLYFILL_NONZERO
позволяет производить заливку всех областей внутри самопересекающегося полигона.
Графическая подсистема ЗОСРВ «Нейтрино», Graphics Framework
gf_context_set_linejoin(), gf_draw_poly_fill()
Основы рисования: Рисование линий и полигонов
Предыдущий раздел: GF API