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