Я написал короткий тест, используя пользовательский компонент с фиксированным размером, рисуя несколько линий в качестве ссылки, затем рисуя прямоугольник с рамкой шириной 30 пикселей на белом фоне. Вот как это выглядит, см. Код ниже:
Итак, ссылаясь на картинку в вопросе, вторая диаграмма («по центру») правильно отображает способ рисования Flash Player.
Также обратите внимание, как внутренние линии (в 45 пикселей) находятся прямо внутри прямоугольника, тогда как внешние линии (в 15 пикселей) совпадают с внешними пределами прямоугольника.
Это код для тестового приложения:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:test="*">
<test:TestCanvas horizontalCenter="0" verticalCenter="0" id="canvas" />
</mx:Application>
А это TestCanvas
компонент:
public class TestCanvas extends UIComponent
{
public function TestCanvas()
{
super();
}
override protected function measure():void
{
super.measure();
this.measuredWidth = this.minWidth = 300;
this.measuredHeight = this.minHeight = 300;
}
override protected function updateDisplayList(w:Number, h:Number):void
{
super.updateDisplayList(w, h);
this.graphics.clear();
this.graphics.lineStyle(undefined);
this.graphics.beginFill(0xffffff);
this.graphics.drawRect(0, 0, w, h);
this.graphics.endFill();
this.graphics.lineStyle(0, 0xff0000, 0.5);
this.graphics.moveTo(0, 15);
this.graphics.lineTo(300, 15);
this.graphics.moveTo(0, 45);
this.graphics.lineTo(300, 45);
this.graphics.moveTo(15, 0);
this.graphics.lineTo(15, 300);
this.graphics.moveTo(45, 0);
this.graphics.lineTo(45, 300);
this.graphics.lineStyle(0, 0xff0000, 0.75);
this.graphics.moveTo(0, 30);
this.graphics.lineTo(300, 30);
this.graphics.moveTo(30, 0);
this.graphics.lineTo(30, 300);
this.graphics.lineStyle(30, 0x0000ff, 0.25, false, "normal", null, JointStyle.MITER);
this.graphics.drawRect(30, 30, 240, 240);
}