You are on page 1of 10

CRYSTAL TOOLKIT IMAGEN IMAGEN EN MINIATURA DE CONTROL Y VISUALIZACIN DE IMGENES.

Por Richard Guion , 11 de mayo 2011 4.50 ( 16 votos ) Descargar el cdigo fuente - 4,7 MB

Introduccin
Ya en 2006, empec a trabajar en aplicaciones de Windows Forms en C #. Me encontr con una serie de proyectos en los que necesitaba para mostrar imgenes en miniatura en un control de formulario, pero tena que hacer que los elementos de fondo, el borde y el texto adaptable. He desarrollado una serie de controles llamado el Kit de herramientas de imagen Crystal que me ha permitido construir aplicaciones que muestran ambas miniaturas y las imgenes completas. Yo probablemente no debera haber llamado a esta Crystal, ya que la gente lo asocia errneamente con Crystal Reports. Yo haba elegido el nombre debido a un personaje de Marvel comics. Yo tambin estaba pensando en imgenes de gran claridad, o tal vez esa cancin, Persuasin azul cristalina. O tal vez, slo soy un loco!

Utilizando el cdigo
Yo te mostrar cmo agregar rpidamente un control de imagen en miniatura para la aplicacin de Windows Forms. En primer lugar, descargue el Kit de herramientas de imagen Crystal desde el enlace de arriba. Compile el cdigo utilizando la solucin que proporciona, que se encarga de la caja de herramientas y todos los ejemplos de demostracin. Crear una nueva aplicacin de Windows Forms en Visual Studio. En el cuadro de herramientas Visual Studio, agregue una nueva pestaa llamada Crystal Image Toolkit (para separarlo de Crystal Reports), y agregue los controles que se encuentran en CrystalToolkit.dll .

Seleccione el control llamado " CrystalImageGridView ". Este es el control que muestra las imgenes en miniatura.Arrastre este control hasta el formulario nuevo.

Ahora, vaya a la ventana Propiedades, con " crystalImageGridView1 "seleccionado. Cambiar el muelle propiedad de relleno . Cambiar la orientacin de la propiedad vertical .

Despus de configurar las propiedades, el control de rejilla de la imagen debe ser similar a esto:

Los bordes azules simplemente darle una idea de lo que los elementos de imagen se ver as en el estado seleccionado. El mapa de bits de imagen rota es slo un marcador de posicin. En tiempo de ejecucin, las imgenes se colocarn dentro de este rectngulo azul. S, usted puede cambiar muchas otras propiedades, como el color del borde, color de fondo, etc. Pero por ahora, vamos a aceptar los valores predeterminados. Vamos a escribir un poco de cdigo. Vaya a la pestaa Eventos, haga doble clic en Load, y generar el evento en el formulario. Ahora que usted est en Form1.cs , vamos a aadir este campo en la parte superior de la clase Form:
Collapse | Copiar cdigo
/ / / < resumen > / / / objeto CrystalCollector, ayuda en la recuperacin de los archivos de imgenes en una carpeta especificada. / / / < / resumen > privado CrystalCollector _theCollector = NULL ;

El CrystalCollector objeto es el controlador en este marco. El colector funciona con el CrystalImageGridView y la CrystalImageGridModel . Encuentra archivos de imgenes que figuran en el ImageLocation propiedad, crea objetos para reflejar esos archivos comoCrystalImageItem objetos, y coloca a los de la modelo. El

colector genera un subproceso de fondo para iniciar el pulgar clavar los elementos de imagen; este hilo enva eventos a la vista para saber cuando una imagen en miniatura disponible. Eso es lo que sucede detrs de las escenas, pero aqu, en este ejemplo sencillo, slo tiene que aadir este mtodo a su forma:
Collapse | Copiar cdigo
privado vaco InitCollector () { _theCollector = CrystalCollectorFactory.DefaultFactory.CreateCollector (CrystalCollectorType.CrystalFileCollector); / / Agregar el objeto CrystalImageGridView al colector. / / El colector trabajar con el fin de sacar las imgenes. _theCollector.SetupView (crystalImageGridView1); / / Opcional: / / . Establecer una carpeta inicial para recoger imgenes / / Si no hay ninguna carpeta se establece, colector comienza a MyPictures / / en Windows XP o en Vista carpeta Imgenes / / CrystalCollectorFactory.DefaultFactory.InitCollectorSource / / ("c: \ \ myimages", _theCollector); / / Dile CrystalFileCollector para recoger las imgenes de la / / ImageLocation carpeta. _theCollector.CollectImages (); } privado void Form1_Load ( objeto sender, EventArgs e) { InitCollector (); } protegido override void OnFormClosing (FormClosingEventArgs e) { si (_theCollector! = NULL ) { _theCollector.StopCollection (); } de base . OnFormClosing (e); }

InitCollector crea el objeto de coleccionista con una fbrica. El tipo que elige es un coleccionista basado en ficheros. Usted podra crear una nueva CrystalFileCollector ti

mismo, pero es mejor usar el Factory. Esto puede ser usado para rastrear objetos creados conseguir / destruido ms adelante. Una vez que el colector ha sido creado, que llamamos SetupView , pasando el CrystalImageGridView objeto que se deja caer sobre el formulario. Esto debe hacerse antes de que se renen las imgenes. El coleccionista crea unaCrystalImageGridModel objeto y enlaza el objeto de la misma. El modelo debe saber acerca de ciertas propiedades de la vista, que afecta a cmo los elementos de imagen en la pantalla.
CollectImages se llama al final, que cuenta la coleccionista mirar el ImageLocation y

empezar a reunir datos acerca de las imgenes que se encuentran all. En este caso, no hemos fijado la ImageLocation -el valor por defecto est ajustado a su Fotos de carpeta (en Vista) o MyPictures carpeta (en WinXP). Si desea inicializar otroImageLocation , utilice el cdigo coment anteriormente la llamada a CollectImages .

Form1_Load llama InitCollector . Pero, hay tambin la anulacin de OnFormClosing , que llama alStopCollector mtodo en el objeto colector. Esta llamada se detendr cualquier

subprocesos en segundo plano pasando a la miniatura de las imgenes.

Despus de compilar y ejecutar este cdigo, usted debe ver las miniaturas de todo lo que las imgenes estn en suFotos de carpetas. Con suerte, van a ser imgenes de amigos, familiares y mascotas, en lugar de imgenes de cmic!

Juega un poco con este formulario, usted debe ver que el control responde a los eventos de cambio de tamao, por lo que el nmero de elementos de imagen por fila crecer o reducir el tamao del formulario. Usted puede hacer Ctrl-clic y Mays y hacer clic en elementos de imagen de seleccin mltiple tambin. Dnde estn estas imgenes en miniatura almacenadas? El CrystalThumbnailer objeto, que hace el trabajo de la creacin de ellos, tiene una propiedad llamada ThumbnailLocationRoot . Por defecto, es su AppData carpeta con el nombre de su empresa y el nombre del producto.

El colector se crea una carpeta sub aqu basado en el nmero hash de la ubicacin original. Almacena las imgenes aqu-el mayor tamao de imagen que necesita para mostrar. En estas demostraciones simples, las miniaturas existir permanentemente. He decidido el comportamiento de retener o borrarlas depende de la aplicacin, y ha dejado la eleccin depende de usted. Obviamente, esto es un ejemplo muy simple, pero he incluido muchas aplicaciones de formularios de muestra en la caja de herramientas: SimpleImageGridDemo muestra una versin ligeramente ms complejo de esta solicitud, por lo que le permite abrir cualquier carpeta y ver las imgenes en miniatura. ZoomImageGrid le muestra cmo configurar CrystalImageGridView para ampliar el tamao de la miniatura hacia arriba o hacia abajo. Es un poco de un hachazo, las miniaturas se almacenan en su tamao ms grande posible, y reducido de acuerdo con una propiedad llamada ZoomFactor . WaitFormPictureShow se muestra cmo utilizar el CrystalMemoryCollector para cargar imgenes directamente sin tener que analizar una carpeta. HeaderImageGridDemo explica cmo poner una lista de CrystalImageItem objetos en un CrystalGroupItem .Agrupar elementos se pueden insertar en el modelo con una pantalla de cabecera especial que se puede plegar / expandido. Por desgracia, no he probado esto con ZoomFactor .

PictureShowControllerDemo (arriba) muestra cmo crear una aplicacin de imagen de visualizacin ms realista. Un contenedor de divisin se utiliza para mantener la CrystalImageGridView en horizontal orientacin en el panel inferior. El panel superior contiene la CrystalPictureShow control, que se utiliza para visualizar las imgenes, los magnificar, y vdeos presentes. Tambin hay una ventana panormica que aparece cada vez que se muestra la imagen en modo no-forma. ComicShowControllerDemo es un visualizador de imgenes especializado que opera en archivos con formato comic-book para el espectador CDisplay, con un CBR. o . CBZ extensin. Usted probablemente nunca han odo hablar de ellos, pero se estn convirtiendo en el estndar MP3-como para el intercambio de libros de historietas. CBR es en realidad un archivo RAR, y CBZ es un archivo ZIP. La fbrica invocar coleccionistas especializados cristal para estos formatos, descomprimir las imgenes, y lo muestra.

Puntos de inters
Despus de escribir la CrystalImageGridView , naturalmente, tena que mostrar una imagen completa, pero elPictureBox control no fue suficiente. Necesitaba hacer zoom \ magnificar la imagen, aadir un efecto de gradiente de fondo, que funcione con una ventana panormica, e incluso hacer presentaciones de diapositivas. I sintetizado una gran cantidad de cdigo de varios artculos aqu en CodeProject, pero tambin de Bob Powell, que ha aportado una gran cantidad de. NET GDI + cdigo en diversos foros. He tratado de acreditar en el cdigo paraCrystalPictureBox y CrystalPictureShow , siempre que sea posible.

Si ejecuta el PictureShowControllerDemo y pulsa el botn Presentacin, ver los siguientes efectos: Iris Fade,, Spin, y diapositivas. He aprendido mucho al escribir esta gua, pero est lejos de ser perfecto. El colector slo admite una vista, he cometido un grave error desde el principio, poniendo los rectngulos de visualizacin de la vista en el interior del modelo en lugar de tener una estructura de datos independiente que tendra acceso a la vista. Para solucionar este problema, tendra que volver a escribir mucho cdigo, pero estoy listo para pasar a un nuevo proyecto. Espero que mi cdigo fuente beneficiar a otras personas en el futuro. Otra mejora que me hubiera gustado hacer es tener el hilo de miniaturas fondo ser dirigido por la vista. En la actualidad, las miniaturas de las imgenes en el orden en que se muestran ordenados en: sera mejor que se comporte como Windows Photo Gallery y de miniaturas las imgenes vistas en el lugar de desplazamiento actual. Hay algunos otros controles aqu, como una barra de seguimiento, el panel de gradiente, etc Yo no estoy apoyando estos, pero los he dejado en la caja de herramientas, porque las muestras de hacer uso de ellos.

Historia

Crystal Image Toolkit 1.0.0 - Dec 6, 2008. Crystal Image Toolkit 1.0.1 - 11 de mayo de 2011: Fuente se ha actualizado para Visual Studio 2010 y NET Framework 4.0..

Licencia
Este artculo, junto con el cdigo fuente y los archivos asociados, est licenciado bajo GNU Lesser General Public License (LGPLv3)

You might also like