drawRect слишком большой - PullRequest
       8

drawRect слишком большой

2 голосов
/ 14 сентября 2009

Эта довольно простая команда рисования создает обведенный красный прямоугольник 11x11 пикселей:

_sp.graphics.lineStyle( 1, 0xFF0000, 1, true, LineScaleMode.NORMAL, CapsStyle.NONE, JointStyle.MITER, 3 );
_sp.graphics.drawRect( 10, 10, 10, 10 );

В чем секрет того, чтобы сделать его 10х10 пикселей?

Если я заливаю прямоугольник с теми же параметрами drawRect, получается 10x10 пикселей:

_sp.graphics.beginFill( 0xFF0000, 1 );
_sp.graphics.drawRect( 10, 10, 10, 10 );
_sp.graphics.endFill( );

Я бы предпочел не рисовать Rect (10, 10, 9, 9); как это похоже на взломать.

1 Ответ

3 голосов
/ 14 сентября 2009

Когда вы рисуете прямоугольник 10x10 , как во втором фрагменте кода, Flash отрисовывает то, что вы ожидаете. Но в вашем первом фрагменте вы рисуете векторный край вокруг прямоугольника 10x10. Теоретически, Flash может выполнить этот запрос, нарисовав край 12x12, который окружает прямоугольник 10x10, или нарисовав прямоугольник 10x10, который перекрывает прямоугольник 10x10 (таким образом, окружая прямоугольник 8x8). На практике Flash разделяет разницу, предпочитая окружать фигуру двумя краями и накладывать ее на два других. Но даже в этом случае, если вы начнете рисовать на полпикселях и т. Д., Вы можете обнаружить, что поведение слегка отличается, поскольку векторное рисование является сложным делом, а средство визуализации Flash сильно оптимизировано.

Для управления на уровне пикселей над линиями, вы должны нарисовать их по отдельности с помощью moveTo() и lineTo().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...