Я пытаюсь нарисовать красный обводку (1 толщину) вокруг прямоугольника с закругленными углами, но обводка неправильно выравнивается по закругленным углам.
углы моего закругленного прямоугольника имеют значения ellipseWidth и ellipseHeight, равные 40Так как они равны, я уверен, предположив, что кривизна каждого угла начинается с минус половины размера угла.таким образом, вместо того, чтобы рисовать мой штрих полностью до угла, я закончу штрих за 20 пикселей до угла и изогну его до 20 пикселей после угла.ясно, как грязь?
Интересно, если я нарисую обводку вокруг закругленного прямоугольника, следуя одному и тому же коду, обводка будет только неточно нарисована вокруг этих двух углов.Кроме того, если ход увеличивается до 2, разрывы больше не видны.
//Rounded Rectangle
var rectWidth:uint = 300;
var rectHeight:uint = 100;
var rectCorners:uint = 40;
var rect:Shape = new Shape();
rect.graphics.beginFill(0);
rect.graphics.drawRoundRect(-rectWidth / 2, -rectHeight / 2, rectWidth, rectHeight, rectCorners, rectCorners);
//Stroke
var stroke:Shape = new Shape();
stroke.graphics.lineStyle(1, 0xFF0000, 1, true, "normal", "none", "miter", 3);
//Stroke Around Top Right Corner
stroke.graphics.moveTo(rect.x + rectWidth / 2 - rectCorners / 2, rect.y - rectHeight / 2);
stroke.graphics.curveTo(rect.x + rectWidth / 2, rect.y - rectHeight / 2, rect.x + rectWidth / 2, rect.y - rectHeight / 2 + rectCorners / 2);
//Stroke Around Bottom Right Corner
stroke.graphics.lineTo(rect.x + rectWidth / 2, rect.y + rectHeight / 2 - rectCorners / 2);
stroke.graphics.curveTo(rect.x + rectWidth / 2, rect.y + rectHeight / 2, rect.x + rectWidth / 2 - rectCorners / 2, rect.y + rectHeight / 2);
//Add To Display List
addChild(rect);
addChild(stroke);
ОБНОВЛЕНИЕ
чем больше прямоугольник и его углы, тем больше смещается мой ход.я больше не уверен, что мои точки кривизны / привязки для моих функций curveTo () верны.Какие-нибудь мысли?