Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-10-2012
blackterfly blackterfly is offline
Registrado
NULL
 
Registrado: oct 2012
Posts: 3
Poder: 0
blackterfly Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 06-10-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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;
}
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 07-10-2012
blackterfly blackterfly is offline
Registrado
NULL
 
Registrado: oct 2012
Posts: 3
Poder: 0
blackterfly Va por buen camino
Hola.

Muchas gracias por contestar. Me voy a poner enseguida a ver que tal es la solución que me das.

Gracias.
Responder Con Cita
  #4  
Antiguo 07-10-2012
blackterfly blackterfly is offline
Registrado
NULL
 
Registrado: oct 2012
Posts: 3
Poder: 0
blackterfly Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 07-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #6  
Antiguo 08-10-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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);
}
Por lo que tu código debería ser:
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);
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 16:03:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi