Заливка слоями

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


person jmasterx    schedule 01.05.2010    source источник


Ответы (1)


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

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

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

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

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

person speeder    schedule 01.05.2010