Доступ к элементам NSBezierPath - PullRequest
0 голосов
/ 29 июня 2018

Я только начинаю учиться работать с NS-классами. Сейчас я пытаюсь выяснить, как можно индексировать и получать доступ к определенным частям NSBezierPath.

В приведенном ниже фрагменте есть круговой путь, который имеет 12 узлов и 4 сегмента. Я хотел бы знать, как индексировать и циклически проходить через каждый из этих узлов / сегментов и применять толщину / цвет. Я могу сказать части кода, которые составляют сегменты, но я не знаю, как получить к ним доступ.

Проще говоря, я хотел бы иметь возможность: - выберите путь - выберите 3-й сегмент - дать ему толщину - цвет синий

Я просматривал документацию AppKit, и мне кажется, что мне нужны следующие коды, но я, честно говоря, понятия не имею, как их применять.

func element(at index: Int) -> NSBezierPath.ElementType

func element(at index: Int, 
associatedPoints points: NSPointArray?) -> NSBezierPath.ElementType

https://developer.apple.com/documentation/appkit/nsbezierpath/1520751-element?changes=_5

Я был бы очень признателен за любую помощь и примеры, чтобы лучше понять, как работать с этими методами и применять их.

SNIPPET:

for path in layer.paths:
    bp = path.bezierPath
    bp.setLineWidth_(5)
    NSColor.blueColor().set()
    bp.stroke()
    print bp

ПЕЧАТАЕТ ЭТО:

Path <0x60400553f0e0>
  Bounds: {{157, 0}, {286, 286}}
  Control point bounds: {{157, 0}, {286, 286}}
    300.000000 0.000000 moveto
    379.000000 0.000000 443.000000 64.000000 443.000000 143.000000 curveto
    443.000000 222.000000 380.000000 286.000000 300.000000 286.000000 curveto
    221.000000 286.000000 157.000000 222.000000 157.000000 143.000000 curveto
    157.000000 64.000000 221.000000 0.000000 300.000000 0.000000 curveto
    closepath
    300.000000 0.000000 moveto
...