[Gvsig_desarrolladores] ¿Pintado por threads?

Francisco José Peñarrubia fpenarru en gmail.com
Mie Sep 26 20:13:00 CEST 2007


Hola Juan.

gvSIG pinta usando el patrón "SingleWorketThread". Puedes buscar 
documentación por google o en la wikipedia, es uno de los más comunes.

Las peticiones de dibujado se encolan y se envían a un único thread que 
lanza el dibujado con un objeto Cancel para permitir interrumpir ese 
dibujado.
Se pinta realmente sobre una imágen en memoria, y hay un timer que cada 
cierto tiempo (400 mseg en las versiones <= 1.1, configurable a partir 
de la 1.2) agarra esa imágen
y la pinta sobre el MapControl.

El dibujado real lo hace el MapContext, puedes ver sus métodos Draw. 
MapContext puede pintar sobre un Graphics2D que provenga de una imágen 
(caso de las peticiones del MapControl) o sobre un Graphics2D que venga 
de otro sitio (por ejemplo al imprimir). MapContext tiene una colección 
FLayers, y cada capa tiene un método draw. Para terminar, existe un 
StrategyManager que en función del tipo de capa escoge una estrategia de 
pintado u otra (patron Strategy). Las estrategias de pintado están en el 
paquete operations, dentro de FMap, y las más interesantes son 
ShpStrategy y DBStrategy.

Bueno, espero haber ayudado.

Saludos.

Juan Lopez escribió:
> Hola, me ha surgido una duda a cerca del metodo que utiliza gvsig para 
> pintar: ¿lo hace por medio de threds? Lo que si he averiguado es que 
> utiliza tecnica de doble buffer para mostrar toda la imagen pintada de 
> una sola vez (en vez de ir pintando poco a poco), pero ¿pinta 
> secuencialmente o por threads?
>
> Gracias de antemano. Si me pudierais pasar documentacion acerca de 
> como mandar pintar al MapContext seria muy bien recibida. Gracias.
> ------------------------------------------------------------------------
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>   


Más información sobre la lista de distribución gvSIG_desarrolladores