Масштабирование в NSView - PullRequest
6 голосов
/ 15 марта 2010

У меня есть NSView, в котором пользователь может рисовать круги. Эти круги хранятся в виде массива NSBezierPaths и в drawRect :, я перебираю массив и вызываю -stroke на каждом из путей. Как добавить кнопку для увеличения и уменьшения NSView? Просто поменять границы вида?

Спасибо.

Ответы [ 3 ]

8 голосов
/ 15 марта 2010

Отправить ваше мнение a scaleUnitSquareToSize: сообщение .

7 голосов
/ 15 марта 2010

Вы также можете найти эту информацию:

https://developer.apple.com/library/content/qa/qa1346/_index.html

Код в этом документе позволяет добавить свойство «масштаба» в представление.

0 голосов
/ 30 марта 2018

Приведенные выше ответы не сработали для моего сценария, но привели меня к решению.

Обновленная ссылка на @ ответ Петра была полезна: scaleUnitSquareToSize

Я нашел две сущности для увеличения:

  1. Обрезка границ вручную
  2. Вычеркивание границ с помощью scaleUnitSquareToSize

Я создал небольшой тестовый проект. Оба решения можно найти в моем репозитории GitHub: BoundsAndFramesCroppingAndScalling

Чтобы понять границы и кадры, прочитайте эту статью: разница между кадрами и границами .

Swift scalling код:

let scaleSize = NSSize(width: 0.5, height: 0.5)
// 0.5 - Half the size
// 1.0 - No calling
// 2.0 - double the size , ... etc
myView?.scaleUnitSquare(to: scaleSize)
myView?.needsDisplay = true
...