2014-07-22 4 views
3

Je veux appliquer un zoom avant et effectuer un zoom arrière avec objets redessiner sur toile si je reçois vue dégagée au niveau de zoom maximum et minimum.GWT: Zoom avant et zoom sur toile de dessin

Je reçois référence comment le faire here donc j'ai passé ma toile à ScalableImage constructeur au lieu de Image et suivi toutes les étapes.
Je redessine l'objet dans "MainDraw" encore une fois la méthode mais ne pas obtenir le résultat approprié. Je sais qu'il me manque une nouvelle échelle et que je traduis un facteur pour redessiner la toile, mais je ne sais pas comment la définir. Je dessine plusieurs objets sur la toile comme l'arc, rect etc ... donc la performance est une préoccupation majeure.

J'ai défini context.translate (0, canvasHeight); et context.scale (1, -1); pour démarrer le système de coordonnées de bas à gauche. (Selon l'exigence)

est un code ci-dessous de l'échantillon avec un objet et cette toile je passe à ScalableImage constructeur et de l'appeler à nouveau dans « mainDraw ».

int canvasHeight = 600; 
int canvasWidth = 600; 

Canvas canvas = Canvas.createIfSupported(); 
Context2d context = pcbCanvas.getContext2d(); 
canvas.setWidth("600"); 
canvas.setHeight("600"); 

canvas.setCoordinateSpaceHeight(canvasHeight); 
canvas.setCoordinateSpaceWidth(canvasWidth); 

context.translate(0, canvasHeight); 
context.scale(1, -1); 

context.beginPath(); 
context.rect(x, y, width, height); 
context.closePath(); 
context.fill(); 

RootPanel.get("canvasContainer").add(canvas); 

Une référence, une idée?
Merci

Répondre

3

Si vous utilisez le contexte arrière dans mon exemple, cela devrait vous permettre de mettre à l'échelle le canevas. Vous pourriez également probablement modifier le constructeur pour prendre un autre widget de toile au lieu d'une image. Cela pourrait être la meilleure solution.

Dans mainDraw(), vous pouvez modifier backContext pour ajouter votre widget de canevas à la place d'une image.

+0

Merci de votre intérêt. En fait, j'ai déjà essayé ce que vous m'avez demandé de faire. Mais l'exigence est un peu différente que j'ai totalement manqué de mentionner en question. Je m'excuse pour cela. Vous pouvez voir une question éditée et s'il vous plaît donner une idée afin que je puisse passer à l'étape suivante. – Priyank