Залить "слоями" - PullRequest
       2

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

0 голосов
/ 01 мая 2010

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

1 Ответ

1 голос
/ 01 мая 2010

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

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

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

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

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

...