2012-02-25 4 views
5

Mi objetivo final es implementar una aplicación como http://www.crystal.ch/abb/power_systems_landscape/ utilizando html5.Lienzo grande HTML5: mover y ampliar todo el contenido, incluido el fondo

Como ve, es posible que necesitemos un lienzo grande (2000 * 600), pero no estoy seguro.

¿Alguien me puede dar una idea solo para seguir el comportamiento del enlace de arriba?

  1. contenido de lona entera incluyendo los antecedentes se puede mover de izquierda a derecha sin problemas utilizando el funcionamiento mousemove y mousedown
  2. toda
  3. contenido de tela que incluye movimiento antecedentes de izquierda a derecha sin problemas de acuerdo con la selección del sistema de potencia
  4. ampliar reducir
  5. Fade out efecto como más círculos icónicos

Cualquier tipo de idea sería apreciada.

Respuesta

3

básicamente quieres algo como esto

<div id='wrapper' style='position: overflow: hidden; relative; width: 500px; height: 300px;> 
    <canvas id='canvas' width='2000' height='600'></canvas> 
<div> 

entonces cuando se quiere desplazarse que haría algo como

document.getElementById('wrapper').scrollTo(x, y); 

y zoom sería

document.getElementById('canvas').style.width = 2000 * zoom; 
document.getElementById('canvas').style.height = 600 * zoom; 

Puedes jugar con setInterval y lo que no se puede obtener el desplazamiento y el zoom agradable y sin problemas, pero eso es definitivamente sea ​​la forma más rápida de obtener ese efecto en un lienzo grande ya que no hay redibujado.

+0

Hola, gracias por tu respuesta. Según la prueba I, el concepto de desplazamiento puede ser implementable. pero confundido con el zoom aún. cambiar el ancho y la altura del lienzo no afecta el contenido del dibujo dentro del lienzo. Puede ser que necesitemos volver a dibujar todo según el ancho y la altura cambiados. De todos modos, sigue buscando la idea antes de "4. Efecto de fundido como más círculos emblemáticos" – Shahdat

+0

al cambiar el ancho/alto de CSS del lienzo, lo acerca sin volver a dibujarlo. Para las pequeñas ventajas, lo mejor es que coloque absolutamente algunos divs, o lienzos pequeños sobre su lienzo más grande y puede usar preevales de propiedad javascript/CSS estándar para lograr un efecto de entrada/salida de fundido o expandir/colapsar. Hay muchos recursos disponibles en ese tipo de cosas. – hobberwickey

+0

Al cambiar el ancho/alto de CSS del lienzo, se recorta el desbordamiento y el resto del contenido se vuelve invisible. Quiero decir no acercarlo. Los recuerdos se desvanecen Me gustaría probar en un pequeño lienzo sobre un gran lienzo. Gracias – Shahdat

0

Lo recomiendo si está trabajando en 2D canvas js, que no utiliza el zoom o mueve el elemento canvas, o cualquier otro elemento html, es mejor que escriba un algoritmo dentro de la función draw. El zoom es la muerte de la calidad y la velocidad, y puede ser complejo desde el zoom hasta el alejamiento (no olvide que todos los datos visibles en el lienzo son solo una imagen). Logré subir una imagen de 13000 px y avatares multijugador para mostrar todo un algoritmo dentro de las funciones de sorteo/actualización.

Si utiliza 2 lienzos puede recortar de grandes imágenes de código y luego componer en el mapa visual.

Si tiene demasiado ancho de imagen> 3000 ps debe dividirse por el nivel más bajo (en los dispositivos iOS para la imagen ~> 3000px viene a ser una escala negativa - la imagen es más pequeña).

Cuestiones relacionadas