Как вырезать область изображения под контуром, Алгоритм?
FillPolygon работает через обход в ширину.

Сначала одним циклом покрасьте все точки контура.
Потом берите любую точку внутри полигона, красьте ее и кладите в очередь. Пока очередь не пуста берете точку оттуда, берете 4 или 8 ее соседей и если они не покрашены еще - красите их и кладете в очередь.

Может быть сложность с выбором самой первой точки внутри полигона. Но тут можно аккуратно пройтись вдоль полигона против часовой стрелки и взять первую непокрашенную точку слева относительно обхода. Тут можно для каждой точки найти вектора на двух соседей по контуру, потом перебрать 4-8 соседних пиксилей и взять тот непокрашенный, вектор на который лежит между двумя векторами вдоль контура.
Берём матрицу, размером с изображение, заполняем нулями. Отмечаем единицами точки, принадлежащие линиям контура.
Добавляем в очередь точку, заведомо лежащую внутри контура и ставим в неё единицу.
Забираем точку из очереди, добавляем в очередь соседей этой точки (слева, справа, сверху и снизу), в которых ещё не стоит единица, и ставим в них единицы. Повторяем, пока очередь не опустеет.