Разве на вашей платформе уже нет какой-либо библиотеки, которая обрабатывает рисование таких фигур?
Рисование заполненного кусочка пирога:
Сначала нарежьте пирог вертикально и горизонтально на четверти.
Если ваш кусок пирога находится точно в одной из этих четвертей или полностью помещается в одну из этих четвертей, то выполните следующую процедуру один раз.
В противном случае ваш кусочек пирога будет разрезан на кусочки - это может произойти даже для некоторых очень тонких кусочков пирога - повторите следующее для каждого кусочка.
Я собираюсь описать кусок пирога, который помещается в верхнем правом квартале - другие кварталы похожи.
Найдите начальный и конечный пиксель дуги (для этого может потребоваться триггер).
Я предполагаю, что «начальный» пиксель этой дуги в верхней правой четверти находится выше и слева от «конечного» пикселя - если нет, поменяйте местами, чтобы сделать это так.
Используйте алгоритм круга Брезенхэма, чтобы найти все пиксели на ободе этой четверти круга, начиная сверху. Игнорируйте значения, пока не дойдете до «начального» пикселя - «активные» пиксели - это точки на ободе круга от начального до конечного.
Используйте алгоритм линии Брезенхэма, чтобы найти пиксели на «левой» линии (линии, которая начинается у «начального» пикселя дуги и идет прямо к центру круга).
Для каждой линии развертки (каждого значения y) дуги нарисуйте одну горизонтальную линию, чтобы покрыть все горизонтальные пиксели от самого левого пикселя левой линии до самого правого активного пикселя на дуге.
(Около вершины четверти круга на ободе может быть много пикселей, имеющих одно и то же значение y строки развертки)
Как только вы обработаете все активные пиксели в ободе круга,
заполните оставшийся треугольник, если есть.
В одну сторону:
Для каждой строки развертки (каждого значения y) сверху вниз нарисуйте одну горизонтальную линию, чтобы покрыть все горизонтальные пиксели от крайнего левого пикселя левой линии до крайнего правого пикселя правой линии,
пока вы не достигнете центра круга.
(Если начальный пиксель находится в нижней части этого четверти круга, может быть много пикселей в левой строке и правой линии, которые находятся на одном и том же значении y строки развертки).