2011-10-20 20 views
6

Tengo un Silverlight Canvas que contiene una imagen con dibujos (polígonos). Necesito desarrollar un control para acercar y alejar este lienzo dentro de un área de trabajo (Border dentro de una celda Grid, a partir de ahora) como se muestra a continuación. Cuál es la mejor manera de hacer esto. ¿Hay alguna biblioteca que pueda usar?Zoom y panorámica de un lienzo de imagen

Necesito poder agregar dibujos al lienzo ampliado/tamizado también.

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

+0

¿Desea que el control deslizante del zoom amplíe realmente el lienzo en vez de la imagen para que el lienzo llene toda el área de trabajo? – Jack

+0

sí. ya que las marcas en la imagen deberían estar en su lugar. – blitzkriegz

+0

Si el lienzo llena toda el área de trabajo depende de cuánto zoom se establece con el control deslizante del zoom. – blitzkriegz

Respuesta

1

Usted puede intentar crear un control de usuario que es básicamente una imagen dentro de un lienzo, y exponer dos propiedades de transformación para controlar la función de zoom y panorámica. Una ScaleTransform manejaría el zoom, y una TranslateTransform manejaría la panoramización. Puede crear un CompositeTransform desde ambos y asignarlo como RenderTransform del lienzo.

Puede vincular el control deslizante del zoom a ScaleTransform y manejar los eventos del mouse para cambiar el TranslateTransform. Siempre que obtenga las coordenadas del mouse relativas al propio lienzo que debería funcionar (es decir, mouseEventArgs.GetPosition(canvas)).

2

Muchos ejemplos de códigos disponibles en Internet. Consulte ZoomControl y CodePlex.

+2

+1, ¿por qué reinventar la rueda? –

Cuestiones relacionadas