| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Eaco Lt JG

Registrado: 04 Nov 2004Mensajes: 58Ubicación: Las Palmas de Gran Canaria-Islas Canarias
|
Publicado: Mar 19 Abr, 2005 6:35 pm Asunto: array de tbitmaps ¿? |
|
|
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  _________________ Jey U! I'm a Telecoman |
|
| Volver arriba |
|
 |
Fernando Diaz Master


Registrado: 18 Jul 2004Mensajes: 273Ubicación: Talavera de la Reina (Toledo)
|
Publicado: Mar 19 Abr, 2005 7:29 pm Asunto: |
|
|
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 |
|
 |
Eaco Lt JG

Registrado: 04 Nov 2004Mensajes: 58Ubicación: Las Palmas de Gran Canaria-Islas Canarias
|
Publicado: Mar 19 Abr, 2005 9:57 pm Asunto: |
|
|
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  _________________ Jey U! I'm a Telecoman |
|
| Volver arriba |
|
 |
Fernando Diaz Master


Registrado: 18 Jul 2004Mensajes: 273Ubicación: Talavera de la Reina (Toledo)
|
Publicado: Mie 20 Abr, 2005 9:40 pm Asunto: |
|
|
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 |
|
 |
Fernando Diaz Master


Registrado: 18 Jul 2004Mensajes: 273Ubicación: Talavera de la Reina (Toledo)
|
Publicado: Jue 21 Abr, 2005 10:23 am Asunto: |
|
|
Prueba con este componente LMDBitmapList1 _________________ Los problemas mas dificiles tienen las soluciones mas sencillas
 |
|
| Volver arriba |
|
 |
Felip Master

Registrado: 09 Jun 2004Mensajes: 200
|
Publicado: Jue 21 Abr, 2005 4:46 pm Asunto: |
|
|
| 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 |
|
 |
LordNemesis Master


Registrado: 31 Dic 2003Mensajes: 340Ubicación: México
|
Publicado: Vie 22 Abr, 2005 2:29 am Asunto: |
|
|
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 |
|
 |
Eaco Lt JG

Registrado: 04 Nov 2004Mensajes: 58Ubicación: Las Palmas de Gran Canaria-Islas Canarias
|
Publicado: Jue 05 May, 2005 12:43 am Asunto: |
|
|
| 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 |
|
 |
Eaco Lt JG

Registrado: 04 Nov 2004Mensajes: 58Ubicación: Las Palmas de Gran Canaria-Islas Canarias
|
Publicado: Jue 05 May, 2005 1:42 am Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
|
| Volver arriba |
|
 |
Eaco Lt JG

Registrado: 04 Nov 2004Mensajes: 58Ubicación: Las Palmas de Gran Canaria-Islas Canarias
|
Publicado: Jue 05 May, 2005 9:26 pm Asunto: cada vez mas perdido :S |
|
|
| 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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 06 May, 2005 3:34 am Asunto: |
|
|
| Código: | std::vector<Graphics::TBitmap> miarraydebmp; // error
std::vector<Graphics::TBitmap*> miarraydebmp; // Ok |
_________________
 |
|
| Volver arriba |
|
 |
LordNemesis Master


Registrado: 31 Dic 2003Mensajes: 340Ubicación: México
|
Publicado: Vie 06 May, 2005 6:20 pm Asunto: |
|
|
| 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
| 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 |
|
 |
|