Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

array de tbitmaps ¿?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: array de tbitmaps ¿? Responder citando

si para copiar el contenido de un tpanel a un tbitmap hago esto....

Código:
Graphics::TBitmap *mibmp = new Graphics::TBitmap;
mibmp->Width  = Panel1->Width;
mibmp->Height = Panel1->Height;
mibmp->Canvas->CopyRect(mibmp->Canvas->ClipRect,Canvas,Rect(Panel1->Left,Panel1->Top,Panel1->Left + mibmp->Width,Panel1->Top+mibmp->Height));
Image1->Picture->Bitmap = mibmp;




si suponemos q el contenido del panel cambia y quiero irlo guardando en un array, p q no puedo hacer esto para crear el array de imágenes?

Código:
Graphics::TBitmap *mibmp = new Graphics::TBitmap ;
Graphics::TBitmap *miarraydebmp = new Graphics::TBitmap[Maximo];
mibmp->Width  = Panel1->Width;
mibmp->Height = Panel1->Height;

for (i=0;i<Maximo;i++)
{
//linea donde me cambia la imagen q hay en Panel1
mibmp->Canvas->CopyRect(mibmp->Canvas->ClipRect,Canvas,Rect(Panel1->Left,Panel1->Top,Panel1->Left + mibmp->Width,Panel1->Top+mibmp->Height));
miarraydebmp[i]=mibmp;  //<--------ERROR!!!! ¿POR QUÉ?
}



gracias Wink
_________________
Jey U! I'm a Telecoman
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Prueba esto

Código:

Graphics::TBitmap *mibmp = new Graphics::TBitmap ;
Graphics::TBitmap *miarraydebmp[10];
for (int x=0;x<10;x++)
        miarraydebmp[x] = new Graphics::TBitmap;
miarraydebmp[1]=mibmp;

_________________
Los problemas mas dificiles tienen las soluciones mas sencillas
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

tu código no da error, pero el problema es q yo necesito que ese array se cree dinámicamente, osea que sea de un tamaño según el número de elementos de un TList
es decir en lugar de:

Código:
Graphics::TBitmap *miarraydebmp[10];


Necesito un :
miarraydebmp[ListBox1->Items->Count]
cuyo valor solo sabré en tiempo de ejecución.

adaptando tu código a lo que necesito hago:

Código:

Graphics::TBitmap *mibmp = new Graphics::TBitmap ;
Graphics::TBitmap *miarraydebmp [ListBox1->Items->Count];
for (int x=0;x<ListBox1->Items->Count;x++)
        miarraydebmp[x] = new Graphics::TBitmap;
miarraydebmp[1]=mibmp;

lógicamente me da un...
Código:
[C++ Error] Unit1.cpp(409): E2313 Constant expression required




Por lo que he intentado hacer

Código:
Graphics::TBitmap *mibmp = new Graphics::TBitmap ;
Graphics::TBitmap *miarraydebmp;
miarraydebmp = new Graphics::TBitmap [ListBox1->Items->Count];
for (int x=0;x<ListBox1->Items->Count;x++)
        miarraydebmp[x] = new Graphics::TBitmap;
miarraydebmp[1]=mibmp;


y me da el error:
Código:
[C++ Error] Unit1.cpp(412): E2285 Could not find a match for 'TBitmap::operator =(TBitmap *)'



La verdad es q no se como hacerlo

PD: Muchas Gracias Wink
_________________
Jey U! I'm a Telecoman
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Esque para definir un array necesitas hacerlo con una constante, nunca con una variable, CREO. por lo que lo mas facil es hacer uno array de [100] punteros a Bitmap y luego hacer los new TBitmap segun los que necesites... o es la unica solucion que yo veo y no tan mala ..yo diria..

Código:

Graphics::TBitmap *mibmp = new Graphics::TBitmap ;
Graphics::TBitmap *miarraydebmp[100];
for (int x=0;x<ListBox1->Items->Count;x++)
        miarraydebmp[x] = new Graphics::TBitmap;
miarraydebmp[1]=mibmp;


_________________
Los problemas mas dificiles tienen las soluciones mas sencillas
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Prueba con este componente LMDBitmapList1
_________________
Los problemas mas dificiles tienen las soluciones mas sencillas
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Código:

void __fastcall TForm1::Button5Click(TObject *Sender)
{
   const int LBITCOUNT = ListBox1->Items->Count;

   Graphics::TBitmap *mibmp = new Graphics::TBitmap ;
   Graphics::TBitmap *miarraydebmp [LBITCOUNT];
   for (int x=0;x<LBITCOUNT;x++)

   ....

}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

declaralo de esta manera
Código:

Graphics::TBitmap **bmp;
bmp = new int*[n];
for(int i=0;i<n;i++)
  {
       bmp[i] = new TBitmap;

   }


y para destruirlo
Código:

for(int i=0;i<n;i++)
  {
       delete bmp[i];
  }
delete []bmp;




O si no quieres meterte en problemas puedes usar un TStringlist...

Código:

Lista->AddObject(new Graphics::TBitmap,"imagen");



y para accesar a ellas
Código:

for(int i=0;i<n;i++)
  ((TBitmap*)Lista->Objects[i])


Espero te sirva un poco mi ayuda...
saludos
_________________
Dirección Municipal de Informática
H. Ayuntamiento de Tijuana
Arriba Lopez Obrador !!!
Los Mexicanos Merecemos Respeto !!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Código:
TStringList * Lista;
Lista = new TStringList;
Lista->AddObject(new Graphics::TBitmap,"imagen");

Me da este error:
Código:
[C++ Error] Unit1.cpp(450): E2034 Cannot convert 'TBitmap *' to 'AnsiString'
[C++ Error] Unit1.cpp(450): E2342 Type mismatch in parameter 'S' (wanted 'const AnsiString', got 'TBitmap *')






Lo que intento hacer es guardar una serie de imágenes que corresponden a los frames de un vídeo en un array como bmp para después trabajar con ellas


Para ello, cuando intento usar una Matriz de TBitmaps:


Código:
Graphics::TBitmap *mibmp = new Graphics::TBitmap ;
Graphics::TBitmap *miarraydebmp[100];

for (int x=0;x<ListBox1->Items->Count;x++)
        miarraydebmp[x] = new Graphics::TBitmap;

//con esto creo el array donde voy a guardar los bmp




Código:
for (i=0;i<ListBox1->Items->Count;i++)
{
MP1->Position=ListBox1->Items->Strings[i].ToInt();  //con esto consigue que cambie la imagen que se muestra en el Panel1
mibmp->Canvas->CopyRect(mibmp->Canvas->ClipRect,
                       Canvas,
                       Rect(Panel1->Left,Panel1->Top,Panel1->Left + mibmp->Width,
                                  Panel1->Top+mibmp->Height));
miarraydebmp[i]=mibmp;
}
//con esto intento guardar los bmp que se van mostrando en el TPanel en cada posición del array






Cuando intento visualizar las imágenes guardadas:
Código:

void __fastcall TForm1::Button7Click(TObject *Sender)
{
Image1->Picture->Bitmap=miarraydebmp[imagenactual];
imagenactual++;
}
//Con esto voy mostrando cada imagen del array


Lo que ocurre es que la imagen que se me muestra es siempre la misma, no sé si el fallo está al "meter" las imágenes en el array o al sacarlas
_________________
Jey U! I'm a Telecoman
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Añado: por las pruebas que he hecho parece que se guarda la MISMA imagen en TODAS las posiciones del array. Siendo esta imagen la última de la lista.
¿Alguna idea de donde estoy fallando?
_________________
Jey U! I'm a Telecoman
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

dentro del foro he dejado vairas, opciones para generar, un arreglo dinamico usando la opion <vector>, y he realizado una clase, para manejar un conjunto de fotos, tal y como si fueran, imagenes

https://cppbuilder.es/viewtopic.php?t=9242&highlight=vector
https://cppbuilder.es/viewtopic.php?t=9076&highlight=vector
https://cppbuilder.es/viewtopic.php?t=9185&highlight=vector
_________________
Cool


Ultima edición por Cesar C. Salazar Gonzalez el Sab 07 May, 2005 5:18 pm, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: cada vez mas perdido :S Responder citando

Código:
std::vector<Graphics::TBitmap> miarraydebmp;
Graphics::TBitmap *mibmp = new Graphics::TBitmap ;




for (i=0;i<ListBox1->Items->Count;i++)
{
MP1->Position=ListBox1->Items->Strings[i].ToInt();
mibmp->Canvas->CopyRect(mibmp->Canvas->ClipRect,
                       Canvas,
                       Rect(Panel1->Left,Panel1->Top,Panel1->Left + mibmp->Width,
                                  Panel1->Top+mibmp->Height));


miarraydebmp.push_back(mibmp);}


me da este error

Código:
[C++ Error] Unit1.cpp(453): E2285 Could not find a match for '_STL::vector<TBitmap,_STL::allocator<TBitmap> >::push_back(TBitmap *)'


la verdad es q cada vez entiendo menos... :S
_________________
Jey U! I'm a Telecoman
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Código:
std::vector<Graphics::TBitmap> miarraydebmp; // error
std::vector<Graphics::TBitmap*> miarraydebmp; // Ok

_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Cita:

Código:
TStringList * Lista;
Lista = new TStringList;
Lista->AddObject(new Graphics::TBitmap,"imagen");


Me da este error:
Código:
[C++ Error] Unit1.cpp(450): E2034 Cannot convert 'TBitmap *' to 'AnsiString'
[C++ Error] Unit1.cpp(450): E2342 Type mismatch in parameter 'S' (wanted 'const AnsiString', got 'TBitmap *')


Una disculpa, puse al reves los parametros Embarassed
Código:

Lista->AddObject("imagen",new Graphics::TBitmap);

_________________
Dirección Municipal de Informática
H. Ayuntamiento de Tijuana
Arriba Lopez Obrador !!!
Los Mexicanos Merecemos Respeto !!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.