2011-10-20 14 views
6

Ho una luce argento Canvas che contiene un'immagine con disegni (poligoni). Devo sviluppare un controllo per ingrandire e spostare questa tela all'interno di un'area di lavoro (Border all'interno di una cella Grid, al momento) come mostrato di seguito. Qual è il modo migliore per farlo. Ci sono biblioteche che posso usare?Zoom e panoramica di una tela immagine

Devo essere in grado di aggiungere anche disegni alla tela ingrandita/panoramica.

http://i54.tinypic.com/1zbe7pf.png

+0

Si desidera che il dispositivo di scorrimento dello zoom ingrandisca effettivamente la tela anziché l'immagine in modo che la tela riempia l'intera area di lavoro? – Jack

+0

sì. dal momento che i contrassegni sull'immagine devono essere posizionati. – blitzkriegz

+0

indipendentemente dal fatto che la tela si riempie per l'intera area di lavoro dipende dalla quantità di zoom impostata mediante il dispositivo di scorrimento dello zoom. – blitzkriegz

risposta

1

Si può provare a creare un controllo utente che è fondamentalmente un'immagine all'interno di una tela, ed esporre due trasformare le proprietà per controllare lo zoom e panning. Un ScaleTransform gestiva lo zoom e un TranslateTransform gestiva il panning. Puoi creare un CompositeTransform da entrambi e assegnarlo come RenderTransform del canvas.

È possibile collegare il dispositivo di scorrimento dello zoom a ScaleTransform e gestire gli eventi del mouse per modificare TranslateTransform. Finché si ottengono le coordinate del mouse relative alla tela stessa che dovrebbe funzionare (ad esempio mouseEventArgs.GetPosition(canvas)).

2

Un sacco di esempi di codice disponibili su Internet. Controlla ZoomControl e CodePlex.

+2

+1, perché reinventare la ruota. –

Problemi correlati