2010-05-01 5 views
0

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

ответ

1

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

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

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

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

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

Смежные вопросы