Как специалист по пользовательскому интерфейсу, меня часто просят создать дисплеи с инструментальными подсказками и другие всплывающие окна, отображающие текст. Один из клиентов стилей, которые больше всего интересуются, - это текст в воздушном шаре с комиксами. Я хотел бы создавать эти воздушные шары программно (в отличие от внедрения или ссылки на визуализированную графику), потому что этим шарам придется менять размер во время выполнения, в зависимости от того, сколько текста они должны удерживать.Как можно программно нарисовать масштабируемый, эстетически приятный, изогнутый хвост комикса?
Воздушные шары легко рисуются по большей части: круги, прямоугольники или прямоугольники с закругленными углами. Жесткая часть для меня - это хвост (маленькая стрелочная часть комикса, указывающая на динамик). Если вы google комический шар, вы видите, что есть много разновидностей хвостов. Их клиенты чаще всего запрашивают у меня кривые. Например ...
http://www.macybugs.com/round%20bubble.PNG
и
Хвост всегда будет находиться на нижней части баллона, и он будет иногда указывать влево, а иногда указывают прямо. Я пытался придумать алгоритмы рисования хвоста некоторое время, но я не доволен результатами. Я в основном спотыкаюсь в темноте, меняя переменные, просматривая результаты и используя пробную версию и ошибку, чтобы попытаться приблизиться к магическим числам, которые будут работать. «Работа» означает только результат, который выглядит приятным, и я понимаю, что он субъективен. Большинство моих клиентов будут довольны всем, что выглядит достаточно хорошим и профессиональным.
Я хочу, чтобы этот результат масштабировался. И было бы здорово, если бы он мог работать с как можно меньшим количеством входов, может быть, просто isFacingLeft, tailWidth и tailHeight (что может быть, это процент от всего шара). Может быть, регулируемая кривая.
Если это имеет значение, я использую Flash/Actionscript, но любая система с каким-то графическим движком черепахи должна работать практически так же: , координаты x и y, возможность перемещения пера, рисование линий и рисование кривых.
Одно предостережение: Вспышка позволяет мне нарисовать 3-х точечные кривые Безье - начальная точка, контрольная точка, конечная точка.
Примечание: воздушные шары не должны будут масштабироваться после того, как они нарисованы.
Нет ничего, что помешало бы вам подключить несколько трехзвенных кривых безье, что никоим образом не ограничивает сложность кривой. – Aaron