丸みを帯びた長方形の周りに赤いストローク(1の太さ)を描画しようとしていますが、丸みを帯びた角の周りにストロークが正しく整列していません。
角の丸い長方形の角のellipseWidthとellipseHeightは40です。これらは等しいので、各角の曲率は角のサイズのマイナス半分から始まると確信しています。したがって、ストロークをコーナーまで描画する代わりに、ストロークをコーナーの20ピクセル前で終了し、コーナーの20ピクセル後にカーブさせます。泥のように澄んでいますか?
興味深いことに、同じコードに従って丸みを帯びた長方形の周りにストロークを描画すると、ストロークはこれらの2つの角の周りに不正確に描画されるだけです。さらに、ストロークを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()関数の曲率/アンカーポイントが正しいことを確信できなくなりました。何かご意見は?