FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Crear array de imagenes
Hola.
Mi pregunta es ¿ Cómo hago un array de imagenes en builder c++ ? Estoy buscando por internet pero me estoy volviendo loco. He probado muchas de las cosas, pero la mayoría son de objective C, powerbuilder, c#,en fin... Me rindo, necesito ayuda humana. Para no terminar con un código pésimo en mi proyecto y por simplificar me es necesario declarar una serie de imagenes, pero que esten dentro de un array, puesto que necesitaría acceder a ellas de manera serial, así como aplicarles los mismos métodos, o eventos de componentes como clicks,... Estoy usando el componente TImage para manipular las imagenes de mi programa. Muchas gracias por leer. |
#2
|
||||
|
||||
Hola blackterfly.
Creo que es mas versátil usar TObjectList en lugar de un arreglo. Te pongo un ejemplo simple de como podes hacerlo, agrega un TImage y un TButton al form: Código:
... #include <jpeg.hpp> ... TObjectList *ObjLst; int NroImg = 0; //imágenes cargadas /* Cargar imágenes en ObjectList */ void __fastcall TForm1::FormCreate(TObject *Sender) { TSearchRec sr; AnsiString path = "C:\\Users\\User\\Pictures\\"; // Ruta a una carpeta con imágenes .jpg randomize(); Image1->Stretch; // sólo si deseas ajustar la imágen ObjLst = new TObjectList; if (FindFirst(path + "*.JPG", faArchive, sr) == 0) do { TImage *Img = new TImage(this); Img->Picture->LoadFromFile(path +sr.Name); ObjLst->Add(Img); NroImg++; } while (FindNext(sr) == 0); } /* Mostrar imágenes cargadas (índice aleatorio) */ void __fastcall TForm1::btnShowImagesClick(TObject *Sender) { Image1->Picture = ((TImage*)ObjLst->Items[random(NroImg)])->Picture; } /* Liberar memoria al finalizar */ void __fastcall TForm1::FormDestroy(TObject *Sender) { ObjLst->Clear(); delete ObjLst; }
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
|||
|
|||
Hola.
Muchas gracias por contestar. Me voy a poner enseguida a ver que tal es la solución que me das. Gracias. |
#4
|
|||
|
|||
Tenía que haber respondido antes pero es que he tenido unos problemas de conexión de
internet acojonantes... bueno, cosas de los domingos. Bueno, he probado usando el array de objetos que me recomiendas, y si es verdad que da mucho juego pues tiene unas opciones muy variadas y muy utiles, pero resulta que el código que he transpolado a mi programa me da un error que no pillo. De esta forma todo funciona perfecto, de hecho será la que voy a utilizar. AnsiString archivo="a"; // Esto es porque la serie de imagenes se llamaran a,aa,aaa,aaaa,etc... for ( int x=0; x<5; x++) { TImage *Img = new TImage(this); Img->Picture->LoadFromFile(archivo+".jpg"); ObjLst->Add(Img); numero++; archivo = archivo + "a"; } Pero necesito entenderlo todo, y cuando estaba cambiando las cosas empece a hacer lo siguiente: TImage *Img = new TImage(this); Img->Picture->LoadFromFile("a.jpg"); ObjLst->Add(Img); TImage *Img = new TImage(this); Img->Picture->LoadFromFile("aa.jpg"); ObjLst->Add(Img); ERROR: Doble declaración de Img. ¿ No debo declararla cada vez al igual que en el bucle ? Última edición por blackterfly fecha: 07-10-2012 a las 22:55:31. |
#5
|
||||
|
||||
Recuerda poner los tags al código fuente, ejemplo:
Gracias |
#6
|
||||
|
||||
Hola blackterfly.
Es que en el código anterior cometí una equivocación, la declaración tendría que haber estato fuera del ciclo: Código:
/* Cargar imágenes en ObjectList */ void __fastcall TForm1::FormCreate(TObject *Sender) { TSearchRec sr; TImage *Img; // <- Aqui randomize(); Image1->Stretch; // sólo si deseas ajustar la imágen ObjLst = new TObjectList; if (FindFirst(path + "*.JPG", faArchive, sr) == 0) do { Img = new TImage(this); Img->Picture->LoadFromFile(path +sr.Name); ObjLst->Add(Img); NroImg++; } while (FindNext(sr) == 0); } Código:
TImage *Img = new TImage(this); Img->Picture->LoadFromFile(path +"a.jpg"); ObjLst->Add(Img); Img = new TImage(this); Img->Picture->LoadFromFile(path +"aa.jpg"); ObjLst->Add(Img);
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Es posible crear un array de TCheckBox? | Negriz | C++ Builder | 5 | 22-04-2009 17:01:02 |
Crear Imagenes en ejecución | Drake | OOP | 7 | 01-07-2007 20:50:23 |
Crear "Array of Const" programáticamente | dec | Trucos | 0 | 30-06-2006 14:20:18 |
crear array | Cosgaya | Varios | 3 | 10-02-2006 10:09:53 |
crear array de groupbox en tiempo de ejecución | abogado | Varios | 1 | 21-03-2005 10:27:43 |
|