[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