Задача состоит в том, чтобы нарисовать пользовательскую форму с использованием графического метода curveTo
.Рисунок с использованием кривой To
Проблема в том, что соединения путей не являются точными.
Результат:
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
// TODO Auto-generated method stub
test.graphics.clear();
test.graphics.lineStyle(1);
drawBorder(test.graphics, 200, 200);
}
private function drawBorder(g: Graphics, width: Number, height: Number): void
{
var cornerRadius: int = 20;
var pointerWidth: int = 4;
var pointerHeight: int = 10;
var pointerBottomGap: int = 6;
width -= pointerWidth;
g.moveTo(0, height - cornerRadius);
g.lineTo(0, cornerRadius + 1);
g.curveTo(0, 0, cornerRadius, 0);
g.lineTo(width - cornerRadius, 0);
g.curveTo(width, 0, width, cornerRadius);
var pointerY: int = height - pointerHeight - pointerBottomGap;
g.lineTo(width, pointerY);
g.lineTo(width + pointerWidth, pointerY + pointerHeight);
g.lineTo(width - pointerWidth, pointerY + pointerHeight + 1);
g.curveTo(width - pointerWidth, height, width - cornerRadius, height);
g.lineTo(cornerRadius, height);
g.curveTo(0, height, 0, height - cornerRadius);
}
]]>
</fx:Script>
<mx:UIComponent
id="test"
x="100" y="100"/>
вопрос можно перефразировать - Как нарисовать прямоугольник с угловым радиусом, используя curveTo
метод?
Я полагаю, что это какое-то упражнение? Потому что гораздо проще рисовать такие основные формы, как примитивы. – RIAstar
Нет, это настоящая задача. Это дизайн чат-сообщения, поэтому он должен быть изменен. Как я могу достичь этого состояния с помощью примитивов? – yrunts
Насколько я могу судить, форма состоит из закругленного Rect и небольшого треугольника в левом нижнем углу. Тем не менее, если это необходимо для масштабирования, вам будет трудно удерживать треугольник в нужном месте. Вероятно, вам будет лучше использовать [Path] (http://flex.apache.org/asdoc/spark/primitives/Path.html). Я посмотрю, смогу ли я конвертировать ваш код. – RIAstar