 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
tonynet Invitado
|
Publicado: Vie 13 Sep, 2002 7:55 pm Asunto: TImageList... Ayuda _LEO, por favor. |
|
|
Hola:
Ya hice esta pregunta hace un tiempo, pero, a dia de hoy no he sido capaz de encontrar la solucion y la fecha de entrega del proyecto se termina. Vuelvo a comentar mi problema para ver si alguien me puede ayudar. He buscado en internet,foros y la bonita ayuda de borland, pero no he visto nada claro.
Problema:(
Añado imagenes(bitmaps) en un TImageList en ejecucion, si estas son muy grandes las recorta, cogiendo mas o menos 32x32 pixel. Si haces esto mismo en diseño, no problem. El te pregunta que si se ajusta, recorta o se centra. Como se hace esto en ejecucion. No creo q sea tan chungo.
gracias. Leo... echame una mano. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 02 Oct, 2002 9:45 pm Asunto: |
|
|
Hola:
Lo siento, no he podido responder antes. Supongo que a estas alturas ya habrás encontrado alguna solución. De todos modos lo pongo por si a alguien le puede ser útil o por si te puede servir para otro proyecto.
El TImageList no tiene ninguna propiedad ni ninguna manera directa de decirle que queremos que la imagen se ajuste a su tamaño, esto es solo parte de su editor de propiedades, y los editores de propiedades solo funcionan en tiempo de diseño.
Así que la solución pasa por cargar la imagen en un bitmap temporal, ajustarlo al tamaño necesario y una vez ajustado ya podemos cargarlo en el TImageList. Aquí va un pequeño ejemplo:
| Código: | TRect rect = Rect(0, 0, ImageList1->Width, ImageList1->Height);
// Creamos un bitmap temporal donde cargaremos y ajustaremos
// las imagenes antes de cargarlas en el TImageList
Graphics::TBitmap *imagen = new Graphics::TBitmap;
// Cargamos una imagen y la ajustamos a las dimensiones del TImageList
// En este ejemplo cargamos las imagenes desde archivos, pero también
// podemos leerlas de los recursos del ejecutable, etc...
imagen->LoadFromFile("C:\\nuestroDirectorio\\imagen1.bmp");
imagen->Canvas->StretchDraw(rect, imagen);
imagen->Width = ImageList1->Width;
imagen->Height = ImageList1->Height;
// El segundo argumento es el color que queremos que sea transparente
// en este caso selecciono el color del pixel inferior izquierdo
ImageList1->AddMasked(imagen, imagen->Canvas->Pixels[0][imagen->Height-1]);
delete imagen;
// Cargamos una segunda imagen
imagen = new Graphics::TBitmap;
imagen->LoadFromFile("C:\\nuestroDirectorio\\imagen2.bmp");
imagen->Canvas->StretchDraw(rect, imagen);
imagen->Width = ImageList1->Width;
imagen->Height = ImageList1->Height;
ImageList1->AddMasked(imagen, imagen->Canvas->Pixels[0][imagen->Height-1]);
delete imagen; |
y para hacer una prueba rápida para comprobar que esto funciona, podemos poner el código anterior dentro del constructor del Form y añadir el siguiente código al evento OnPaint del Form:
| Código: | for (int i=0; i<ImageList1->Count; i++)
ImageList1->Draw(Canvas, i*(ImageList1->Width+5), 5, i); |
Saludos:
_Leo |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 03 Oct, 2002 1:23 am Asunto: |
|
|
Una pequeña corrección... La rutina anterior ajusta las imágenes que son mayores que las dimensiones del TImageList, pero las que son mas pequeñas las ajusta mal. En esta versión se ajustan tanto las más grandes como las más pequeñas correctamente:
| Código: | // Creamos los bitmaps temporal donde cargaremos y ajustaremos
// las imagenes antes de cargarlas en el TImageList
Graphics::TBitmap *imgFuente = new Graphics::TBitmap;
Graphics::TBitmap *imgDestino = new Graphics::TBitmap;
imgDestino->Width = ImageList1->Width;
imgDestino->Height = ImageList1->Height;
// Cargamos una imagen y la ajustamos a las dimensiones del TImageList
// En este ejemplo cargamos las imagenes desde archivos, pero también
// podemos leerlas de los recursos del ejecutable, etc...
imgFuente->LoadFromFile("imagen1.bmp");
imgDestino->Canvas->StretchDraw(
Rect(0,0,imgDestino->Width,imgDestino->Height), imgFuente);
// El segundo argumento es el color que queremos que sea transparente
// en este caso selecciono el color del pixel inferior izquierdo
ImageList1->AddMasked(imgDestino,
imgDestino->Canvas->Pixels[0][imgDestino->Height-1]);
// Cargamos una segunda imagen
imgFuente->LoadFromFile("imagen2.bmp");
imgDestino->Canvas->StretchDraw(
Rect(0,0,imgDestino->Width,imgDestino->Height), imgFuente);
ImageList1->AddMasked(imgDestino,
imgDestino->Canvas->Pixels[0][imgDestino->Height-1]);
delete imgFuente;
delete imgDestino; |
|
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|