SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: lalo_soft en Viernes 20 de Abril de 2007, 17:52
-
Hola amigos quiero pedir algo de ayuda,par un encargo que me dieron.
Tener aprox 200 PictureBox con su corespondiente imagen, para luego mostrarlos en un Form en tandas de 20, me pueden dar ideas de como afrontar esto.
-
Si vas a mostrar 20 PictureBox a la vez entonces solo necesitas tener 20 PictureBox , el resto es rotar dinamicamente las imagenes en los picture box para lo cual pueds llegar a crear 200 objetos Bitmap, pero eso seria inefiente
lo mejor es cargar de a 20 imagenes a la vez desde disco para evitar sobrecargar la memoria.
-
Gracias Juank por tu pronta respuesta,voy a probar tu idea lo que me preocupa es que el cambio de images tiene que ser practicamente instantaneo e ir sacandolo del disco tendra un retardo a esto hay que sumarle que el equipo esta reproduciendo simultaneamente un archivo de video en mpeg.
Los PictureBox con su correspondiente imagen ¿pueden estar previamente guardados en una especie de coleccion para sacarlos de ahi en forma mas rapida?
-
bueno , entonces no me hice entender.
el picturebox es mas pesado que la sola imagen
para guardar la imagen debes usar la clase Bitmap que es mas liviana y esta la puedes asignar a la imagen del picturebox ya que Bitmap hereda de Image (que es abstracta).
sin embargo cargar 200 imagenes en memoria creo que es demasiado.
lo que puedes hacer es tener cargadas 'digamos' 60 imagenes ( en objetos Bitmap) y muestras 20 en los 20 picturebox, pero cuando los muestras te aseguras de tener cargadas 20 imagenes antes y 20 imagenes despues en objetos Bitmap en memoria.
cuando avances a los siguientes 20, entonces muestras los 20 siguientes que ya tienes precargados, y mientras tienes un hilo que va cargando las siguientes 20 en memoria .
-
cuando avances a los siguientes 20, entonces muestras los 20 siguientes que ya tienes precargados, y mientras tienes un hilo que va cargando las siguientes 20 en memoria
sorry!! :huh: ¿como seria ese asunto del hilo? lo e oido nombrar pero como se trabaja con hilos .
-
bueno hay muchas formas de hacerlo, unas mas fáciles, otras mas robustas, otras mas cortas pero menos legibles en fin...
para comenzar pegale una ojeada a System.Threading.Thread y busca los link en el foro de C# ( este foro) usando la opción de búsqueda.
si te quieres ir por cosas mas livianas pero un poco mas avanzadas para ti averiguate acerca de AsyncCallBack.
-
Gracias Juank por tu tiempo ;) ,pondre los ojos en los link B) y las manos en el teclado :comp: , te aviso luego como me fue.
-
una ultima cosa en VB el control PictureBox tenia un index para direccionarlo,pero no logro encontrar esto en el VC#.
-
E VB el control PictureBox tenia un index para direccionarlo
no se a que te refieres.
-
Que en VBasic uno podia hacer un especie de arreglo de controles con un mismo nombre asignando un numero a la propiedad index,pero en VC# los controles no tienen
la propiedad index.
-
asi es...
pero mejor
ya quer tu simplemente creas un PictureBox[]
eso es todo... lo malo es que tendras que agregarlos manualmente y configurarle a todos las propiedades.
-
asi pense que seria,me queda un detalle como le asigno un evento Click, este evento deve ser uno y el mismo para todos los PictureBox del array.
-
de la misma forma, creas el delagado y se lo asignas al multicast delegate de los picture box...
bueno una forma fácil y que hace prácticamente lo mismo
es que tengas un PictureBox , le crees 'el evento' y luego en las propiedades de los demas PictureBox seleccionas el mismo evento que ya habias creado.