Скажем, я хочу создать собственный элемент управления, который бы выглядел примерно так:
http://karmalita.com/stuff/alpha1.png
Ширина всплывающего окна может меняться, а также может изменяться относительное положение «треугольника указателя». Конечно, дополнительная графика / текст будет нарисован сверху.
Я хочу, чтобы это основывалось на изображениях, а не на попытках сделать весь вектор. И, конечно, изображения имеют различную прозрачность, где возникают осложнения.
Я знаю, что есть различные способы сделать это (в настоящее время я использую четыре изображения, одно из которых копируется много раз .... это работает, но грязно), но мне интересно найти самый простой, чистый путь. Было бы неплохо, если бы я мог использовать девятиугольник для основного прямоугольника (внизу слева), а затем нарисовать треугольник-указатель (внизу справа) поверх него.
http://karmalita.com/stuff/alpha2.png
Но, конечно, это не сработает, поскольку нижний край прямоугольника будет проходить через треугольник указателя, и тени будут накапливаться и т. Д.
Есть ли какая-нибудь магия Портера-Даффа, которую я могу сделать?
Или я должен просто замаскировать область указателя с помощью прямоугольного обратного клипа, а затем нарисовать патч из девяти (соответственно растянутый), чтобы он выглядел следующим образом ...
http://karmalita.com/stuff/alpha3.png
.... затем удалите прямоугольник клипа, затем нарисуйте треугольник указателя в области, где был прямоугольник клипа?
Или что? Есть ли более простой / лучший / более эффективный способ?
Хотя мне бы хотелось решить эту конкретную проблему, меня больше всего интересует общее решение для подобных сценариев.