Pergunta

Eu tenho uma View na qual o usuário pode desenhar círculos. Esses círculos são armazenados como uma variedade de nsbezierpaths e em drawrect:, eu fico através da matriz e ligo -stroke em cada um dos caminhos. Como adiciono um botão para aumentar e sair do zoom na NSView? Basta mudar os limites da vista?

Obrigado.

Foi útil?

Solução

Outras dicas

Você também pode achar isso informativo:

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

O código nesse documento permite adicionar uma propriedade "escala" a uma visualização.

As respostas acima não funcionaram para o meu cenário, mas me levaram a uma solução.

O link atualizado para a resposta de @Peter foi útil: ScaleUnitsquaretosize

Eu encontrei duas almas para o zoom:

  1. Cortando os limites manualmente
  2. Rechendo os limites com scaleUnitSquareToSize

Eu criei um pequeno projeto de teste. Ambas as soluções podem ser encontradas no meu repo Github: BoundsandFramesCropping eScalling

Para entender os limites versus os quadros, leia isto, então artigo: diferença entre o quadro e os limites.

Código 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top