Залить "слоями"

Я хочу создать программу векторного рисования со слоями, но чтобы избежать использования прозрачности / непрозрачности, я хочу нарисовать каждую фигуру от нижнего слоя до верхнего слоя на одном растровом изображении. Для заполнения я хочу заполнить форму. Моя проблема в том, что если у меня есть фигура, которая рисуется и затем заливается, то следующая фигура немного перекрывает ее, и граница новой фигуры такая же, как и у другой, тогда заливка только частично заполнит ее. Есть ли способ с учетом координат формы, чтобы я мог найти реальные границы для заливки, а не использовать целевой цвет? Спасибо

1 ответ

Решение

Floodfill не будет работать для того, что вы хотите... Если вы не выполните одно из следующих действий:

Вариант 1: используйте заливку в другой части памяти, а затем перетащите фигуру, используя маску, в место, где вы хотите, поскольку вы сказали, что хотите избежать прозрачности, эта опция как бы перечеркнута... (хотя я все еще рекомендую это, действительно, это не трудно сделать, если это проверяет, должен ли тот пиксель быть скопирован)

Вариант 2. Используйте только базовые фигуры, которые вы можете легко заполнить, не используя заливку, заполнив их горизонтальными линиями с начальной и конечной точкой между двумя конечными пикселями каждой линии фигуры. Это было бы для квадратов, кругов...

Вариант 3: То же, что и вариант 2, но допускаются произвольные треугольники.

Вариант 4: То же, что и 3, но позволяет вам прочитать список точек и составить объект из нескольких прямоугольников, чтобы вы могли создать любую произвольную форму (даже выпуклую). Это было бы очень сложно реализовать правильно (особенно выпуклые формы).

Другие вопросы по тегам