2011-08-11 2 views
3

Je travaille sur une application qui incorpore une interface de dessin (comme Paint ou Photoshop) en tant qu'élément de canevas HTML5. Je voudrais pouvoir redimensionner dynamiquement l'élément de canevas et les données de pixel sur celui-ci pour simuler la fonctionnalité de zoom. Mes pensées ont une sorte de fenêtre qui contient l'élément canvas. Je pourrais alors redimensionner la toile et son contenu à l'intérieur de la fenêtre d'affichage (qui reste de la même taille).Redimensionner et mettre à l'échelle HTML5 Toile et contenu

Comment est-ce que je ferais mieux de mettre en application cette fonctionnalité?

+0

Vous pourriez sauver une « capture d'écran » en utilisant '.toDataURL()', puis redimensionner la toile et tirer cette capture d'écran étiré. Cependant, il semblera flou car le canevas ne sera pas redimensionné de manière pixellisée. – pimvdb

+0

copie possible: http://stackoverflow.com/questions/331052/how-to-resize-html-canvas-element –

Répondre

9

Vous pouvez le faire très facilement en séparant l'affichage de la surface de dessin en introduisant un autre canevas. Créez un canevas masqué à l'aide de

var canvas = document.createElement('canvas'); 

Dessinez ensuite la totalité de votre scène sur ce canevas. Dessinez ensuite le contenu de ce canevas sur un autre canevas qui est réellement visible à l'utilisateur en utilisant la méthode drawImage (qui peut également recevoir un canevas au lieu d'une image). Si vous voulez dessiner votre scène zoomée, vous pouvez le faire en faisant le rectangle source (les paramètres sy, sx, sw et sh sur drawImage) sur la toile cachée plus petit, lorsque vous le dessinez sur le canevas visuel. Cela vous donnera l'effet de zoom.

Cependant, si vous avez complètement redessiné chaque image sur votre canevas, vous pouvez également simplement regarder le scale method de l'objet canevas.

+0

Merci, vous m'avez donné de bons endroits pour commencer! –

+0

J'apprécierais un +1 alors :) –

+0

J'ai essayé, mais je ne pense pas que mon compte en soit encore capable. :( Vous avez toujours la satisfaction d'un travail bien fait.: D –

Questions connexes