2009-02-26 7 views
2

Je construis une application sur le dessus de la toile, elle consiste en un simple DOM qui est redessiné à chaque déplacement de la souris (oui, c'est nécessaire), pour des problèmes de performances, chaque partie n'est pas redessinée est nécessaire.Dessin Application Zoom Concept

L'application fonctionne bien, mais je voudrais ajouter la fonction de zoom, la façon dont je le vois, il peut se faire de trois façons différentes:

1 - Chaque élément DOM se recalculé (position et la taille

2 - Le canevas a une propriété de résolution (c.-à-d. lorsque la résolution de zoom de l'utilisateur peut changer de 1 à 0,75)) - il sera nécessaire de faire les calculs sur chaque redessiner

3 - Utiliser les méthodes intégrées translate() et scale() ds - peut-être la solution la plus élégante et la plus rapide, mais ce n'est pas du tout intuitif, il peut être difficile de comprendre comment cela se fait par moi-même ou par quelqu'un d'autre (ces méthodes fonctionnent sur toute la toile, d'abord échelle sur la toile et après tout ce que vous dessinez devient «magiquement» traduit et mis à l'échelle)

Lequel est le meilleur ou y at-il d'autres possibilités auxquelles je ne pense pas?

+0

bonne chance pour l'ensemble du projet. La chose que vous construisez semble vraiment difficile. – Natrium

+0

Bonjour Vasco, maintenant je dois mettre en œuvre la même chose dans mon application. Pouvez-vous partager votre expérience sur ce sujet? Merci. –

Répondre

1

J'utiliserais les méthodes intégrées translate()/scale(). Si vous vous inquiétez de la performance et de la qualité de l'une de ces méthodes, vous devriez essayer de le faire de manière à pouvoir comparer une autre option si les résultats finissent par vous inquiéter.