2008-09-25 13 views
16

Tengo un lienzo en el que dibujo un montón de formas y otros elementos de la interfaz de usuario. Este lienzo puede ser muy grande, así que quiero poner esto en un panel que me permite acercar/alejar con el mouse y desplazarme arrastrando el mouse, al igual que Google Maps. Lo más parecido que pude encontrar fue ScrollViewer, pero obviamente esto no es lo suficientemente cerca.Panel de desplazamiento similar a Google Maps en WPF

¿Alguien ha hecho esto en WPF y tiene algún código XAML y/o C#?

+2

1 a esta pregunta - Quiero ver algo como esto ¡también! =) –

Respuesta

4

I asked last week si DeepZoom fue planeada para WPF (ya está disponible en Silverlight). Recibí un enlace a este código que se parece mucho a tu solución deseada: Pan and Zoom in WPF

+0

+1 para el increíble enlace - SO FTW ... – jnoss

2

Creo que estás en el camino correcto con el uso de un gran lienzo/grilla con el ScrollViewer. Recientemente hice algo similar con la misma configuración.

Para acercar y alejar, puede usar una ScaleTransform en la propiedad LayoutTransform del lienzo, luego conectarla al evento MouseWheel. Puede cambiar ScaleX y ScaleY para "acercar" y "alejar", y todos los elementos secundarios del lienzo se "acercarán" también.

Para la panorámica, puede ocultar las barras de desplazamiento en el ScrollViewer, y usar el evento MouseMove para llamar a la función ScrollViewers ScrollToHorizontalOffset() para mover las barras de desplazamiento programáticamente. Utilice el enlace que publicó "Soluciones óptimas", es exactamente cómo hacerlo.

Si estuviera en mi máquina de desarrollo, podría darle un código de ejemplo.

0

Salida this artículo CodeProject por Sacha ... Él tiene una FrictionScrollViewer que hace el desplazamiento arrastrando el ratón (también admite una cierta física ...)

Cuestiones relacionadas