Dibujo en capas en java

Estoy haciendo una aplicación de escritorio swing. Dibuja gráficos vectoriales en capas y la interfaz utiliza una barra de desplazamiento y tiene la capacidad de acercarse. Hay aproximadamente 5 capas de gráficos vectoriales y una capa en particular es muy costosa de dibujar. Puede que sea necesario volver a pintar las capas de vez en cuando (animación simple).

La situación en este momento es la siguiente:

  1. Se crea una imagen almacenada
  2. Cada capa se dibuja en la imagen
  3. la imagen almacenada en la memoria intermedia se muestra en la pantalla usando un panel que tiene el mismo tamaño para que se pueda usar una barra de desplazamiento.

Me encuentro con problemas de rendimiento cuando hago zoom. El zoom puede hacer que la imagen almacenada sea realmente grande. Una imagen puede alcanzar un pico a 60000x60 cuando la escala está a 16x. Por supuesto, esto ocupa mucha memoria y quiero rediseñar esto.

Aunque realmente no sé por dónde empezar, siento que estoy reinventando la rueda. Mi conocimiento de java2d también es muy limitado. Realmente quiero mejorar esto tal vez usando una biblioteca, sé que debe haber algo que tenga la funcionalidad que quiero. ¿Alguna biblioteca que se te ocurra?

Respuesta 1

No cree la imagen almacenada. Está rasterizando la salida antes de saber cuánto se va a mostrar.

Examine los rectángulos de "daños" y tenga un sistema de devolución de llamada que le indique la "subparte" del ráster que necesita presentar, luego solo rasterice los píxeles requeridos. Eso debería brindarle un rendimiento relativamente constante sin importar el nivel de zoom, porque los únicos píxeles que se calcularán son los píxeles que se mostrarán, no una imagen que conceptualmente tenga 16 ^ 2 veces más píxeles que antes.

Respuesta: 2

Entonces me preguntaba cómo y si fuera posible usar Hashmaps, uno que contenga solo cadenas y el otro que contenga una clave de cadena similar pero un valor flotante, para compararlos y luego de esa comparación ...

Tengo un pequeño programa que ya comenzó con múltiples elementos de menú. Cuando se hace clic en un elemento, me gustaría que se muestre algo en el marco, y cuando se hace clic en otro elemento, el primero desaparece y ...

Tengo una consulta que devuelve una lista de entidades. Cuando trato de poner esta lista en el caché, obtengo la familiar java.lang.IllegalArgumentException. Sin embargo ... puedo poner cada elemento dentro de la lista para ...

booleano yn = verdadero; while (yn) {System.out.println ("ingrese su nombre"); nombre de char = (char) System.in.read (); interruptor (nombre) {...