Как мне установить векторную маску для кликов в Qt? - PullRequest
1 голос
/ 12 марта 2020

Мне нужно создать интерактивный компонент с пользовательской формой. Внешний вид задается файлом SVG. Кликабельная область должна быть ограничена формой SVG. Я нашел пример того, что мне нужно, но он использует маску пикселей или маску круга. Можете ли вы помочь мне найти решение?

1 Ответ

1 голос
/ 12 марта 2020

Скорее всего, вам нужно будет создать пиксельную маску самостоятельно из фигуры SVG.

Вопрос в том, как к этому подойти. Qt не предлагает простой способ сделать это. Однако в Qt вы можете визуализировать SVG вне экрана в изображение, которое вы инициализируете прозрачными пикселями или цветным ключом. Затем вы можете использовать это изображение в качестве маски. Если размер вашей точки зрения часто меняется, вы можете сначала сделать маску в более высоком разрешении, а затем соответственно уменьшить ее для производительности. Также обратите внимание, что если ваш SVG анимирован, вы должны будете это приспособить.

Или вы можете использовать библиотеку, отличную от Qt, чтобы получить маску. Кроме того, если ваш SVG содержит только один полигон, вы можете go для теста точечного полигона. Но я сомневаюсь в этом, и такой тест также не является тривиальным, когда многоугольник невыпуклый (в любом случае вы обычно получаете алгоритм сканирования).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...