См. Документацию Shape :
К большинству узлов обычно применяются только целочисленные переводы и
довольно часто они определяются с использованием целочисленных координат. За
В этом общем случае заливки фигур с прямыми краями имеют тенденцию быть
четкие, так как они совпадают с трещинами между пикселями, которые падают на
целочисленные координаты устройства и, таким образом, имеют тенденцию естественно охватывать все
пиксели.
С другой стороны, поглаживание тех же самых форм часто может привести к нечеткости
контуры, потому что атрибуты обводки по умолчанию указывают на то, что
ширина обводки по умолчанию равна 1,0 координате, которая часто отображается точно в 1
устройство пикселей, а также, что штрих должен охватывать границу
форма, падающая наполовину по обе стороны границы. Поскольку
границы во многих общих формах имеют тенденцию падать прямо на целое число
координаты и эти целочисленные координаты часто отображаются точно в
целочисленные местоположения устройства, границы, как правило, приводят к 50% охвату
над рядами пикселей и столбцами по обе стороны от границы
форма, а не 100% покрытие на одном или другом. Таким образом, заливки могут
как правило, четкие, но удары часто нечеткие.
Два общих решения, позволяющих избежать этих нечетких контуров, заключаются в использовании более широкого
штрихи, которые полностью покрывают больше пикселей - как правило, ширина штриха
2.0 достигнет этого, если не будет преобразований масштаба -
или указать либо StrokeType.INSIDE, либо StrokeType.OUTSIDE
стили обводки - которые смещают стандартную единичную обводку на
одна из строк или столбцов полного пикселя только внутри или снаружи
граница фигуры.
И см. Также документацию Узел :
На уровне пикселей устройства целочисленные координаты отображаются в углы
и трещины между пикселями и центрами пикселей появляются в
средние точки между местоположениями целых пикселей. Потому что все координаты
значения задаются числами с плавающей точкой, координаты могут
точно указывать на эти углы (когда значения с плавающей запятой имеют
точные целочисленные значения) или в любое место на пикселе. Например,
координата (0.5, 0.5) будет указывать на центр верхнего левого
пиксель на сцене. Точно так же прямоугольник в (0, 0) с размерами
10 на 10 будет охватывать от верхнего левого угла верхнего левого
пиксель на сцене в правом нижнем углу 10-го пикселя на
10-я строчка. Центр последнего пикселя внутри этого
прямоугольник будет в координатах (9,5, 9,5).
Таким образом, ваши варианты для чистых линий, когда у вас нечетная ширина обводки:
- Используйте стиль обводки StrokeType.INSIDE или StrokeType.OUTSIDE.
- Смещение координат фигур на 0,5 пикселя, так что штрихи располагаются на линиях, а не на трещинах между линиями.
- Просто используйте следующий четный номер в качестве ширины штриха, например, 1 => 2, 3 => 4 и т. Д.
Относительно того, почему setSmooth(false)
не работает, я точно не знаю, я предполагаю, что сглаживание, на которое оно ссылается, не зависит от стилей сглаживания, выполняемых, когда штрихи центрированы на трещинах между пикселями, но я бы не стал знаю, почему это будет.