Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-04-2009
Isuri Isuri is offline
Miembro
 
Registrado: mar 2009
Posts: 22
Poder: 0
Isuri Va por buen camino
Cargar TImage

Hola,

quiero cargar una imagen dinamicamente desde el form, ya que destruyo y vuelvo a crear la imagen varias veces.

Image1 := TJPEGImage.Create;
Image1.LoadFromFile('corazon.jpg');

no se si con esto es suficiente. tambien me gustaria posicionar la imagen donde yo quiera y darle dimensiones

gracias
Responder Con Cita
  #2  
Antiguo 07-04-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A ver si lo he entendido bien. Si lo que necesitas es mostrar una imagen en un formulario, la clase "TJPEGImage" (hasta donde yo llego) no es la adecuada, porque, no se trata de un componente, menos un componente "visual", como pueda serlo el componente "TImage". Así pues, creo que habría que usar el componente "TImage" o alguno similar.

No sé si el siguiente código hace exactamente lo que quieres: crea en tiempo de ejecución un componente "TImage", carga una imagen JPG en el mismo y luego muestra esta imagen en un formulario. Hay varias cosas a tener en cuenta en el siguiente código:

Código Delphi [-]
uses
  SysUtils, ExtCtrls, Jpeg;

procedure TForm1.Button1Click(Sender: TObject);
var
  imgPath: string;
  imgComp: TImage;
begin
  imgPath := ExtractFilePath(ParamStr(0)) + 'pompas.jpg';
  imgComp := TImage.Create(Self);
  with imgComp do begin
    Parent := Self;
    SetBounds(10, 10, 200, 200);
    Picture.LoadFromFile(imgPath);
  end;
end;

En primer lugar, las unidades a utilizar. En "ExtCtrls" encontramos la clase del componente "TImage". En "Jpeg" lo necesario para que, a la hora de cargar la imagen JPG, no nos encontremos con la excepción "EInvalidGraphic", puesto que el componente "TImage" no soporta este tipo de imágenes por sí solo. La unidad "SysUtils" nos proporciona, entre otras cosas, la función "ExtractFilePath".

Yo diría que ya está dicho todo. Tal vez pueda decirse algo sobre la instrucción "Parent := Self;". Sin esta crearíamos el componente, pero, no mostraríamos la imagen en el formulario. En efecto, es menester un "Parent" para el componente "TImage", y nosotros le damos uno con "Self" (el propio formulario "Form1"). Si acaso, para terminar, añadir que usamos el mismo formulario como "Owner" (dueño, encargado) del componente "TImage".

De este modo, cuando se destruya el formulario, automáticamente, se destruirá también el componente "TImage", es decir, que delegamos esta tarea (destruir el objeto que hemos creado) al formulario donde mostramos la imagen. Y ya está. Creo que me he enrrollado mucho, sobre todo teniendo en cuenta que he empezado con un "A ver si lo he entendido bien."...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 07-04-2009
Isuri Isuri is offline
Miembro
 
Registrado: mar 2009
Posts: 22
Poder: 0
Isuri Va por buen camino
Mi codigo antes era:


Image1 := TImage.Create(self);
Image1.Picture.LoadFromFile('corazon.jpg');
Image1.Height := 17;
Image1.Width := 17;
Image1.Top := 32;
Image1.Left := 152;


es parecido al tuyo pero no me va, he probado con tu codigo, dec, pero sigp sin ver la imagen al ejecutar...
Responder Con Cita
  #4  
Antiguo 07-04-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

El código que he puesto debería irte bien, puesto que lo he probado antes de enviarlo. ¿Qué podría "fallar"? Tal vez la versión de Delphi. Sé que la unidad "Jpeg" ya existía en Delphi 7, y, en lo demás no veo posibles problemas en este sentido. A tu código le falta al menos el "Parent". Debes darle un "Parent" al componente "TImage", tal como digo en mi anterior mensaje.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 07-04-2009
Isuri Isuri is offline
Miembro
 
Registrado: mar 2009
Posts: 22
Poder: 0
Isuri Va por buen camino
la version que uso es delphi 7, en la unidad jpeg va bien en esta version, ya que la he usado en otras ocasiones. no se que es lo que puede fallar pero gracias.
Responder Con Cita
  #6  
Antiguo 07-04-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pues... del código que has mostrado últimamente, ya digo, lo único que hecho en falta es la asignación de la propiedad "Parent" del "TImage":

Código Delphi [-]
  Image1 := TImage.Create(self);
  Image1.Picture.LoadFromFile('corazon.jpg');
  Image1.Height := 17;
  Image1.Width := 17;
  Image1.Top := 32;
  Image1.Left := 152;

  // Añadir esto
  Parent := Self;

Sin embargo... veo algo extraño en el código, y es el identificador "Image1". Normalmente, estos identificadores corresponden a componentes creados en tiempo de diseño, por el propio Delphi, mediante la técnica de arrastrar un componente desde el Inspector de Objetos a un determinado formulario.

Si lo que haces es esto último, entonces no es que falte algo en tu código, sino que tal vez sobre. En efecto, no necesitas crear un componente que ha sido añadido en tiempo de diseño, porque el propio entorno se encargará de crearlo. Es decir, entonces en tu código sobraría esta instrucción:

Código Delphi [-]
Image1 := TImage.Create(self);

Ya tienes el componente en el formulario, luego, no necesitas crearlo. Dándole vueltas, creo que he pasado por alto esto de tu primer mensaje: "ya que destruyo y vuelvo a crear la imagen varias veces." Si lo que necesitas es cargar distintas imágenes en un mismo "TImage", simplemente, cárgalas, usa el "Picture.LoadFromFile()", sucesivamente, puesto que las imágenes, si no me equivoco, no se solapan, sino que la última sustituirá a la que hubiera antes.

PD. Tal vez podría añadirse algo que no parece muy evidente. Para "quitar" una imagen de un componente "Timage", no hay ningún método preparado, pero, en su lugar puede usarse algo así:

Código Delphi [-]
Image1.Picture := nil;

Esa instrucción no destruirá el objeto "TImage", de modo que podrá cargarse en el mismo una nueva imagen (o no).
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 07-04-2009
Isuri Isuri is offline
Miembro
 
Registrado: mar 2009
Posts: 22
Poder: 0
Isuri Va por buen camino
Muchas gracias dec, no he hecho exactamente lo que tu me has dicho pero me has dado otra idea, y ya lo he arreglado.

Gracias!!
Responder Con Cita
  #8  
Antiguo 07-04-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Hombre, ¡pero dí que has hecho! Igual resulta interesante.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #9  
Antiguo 07-04-2009
Isuri Isuri is offline
Miembro
 
Registrado: mar 2009
Posts: 22
Poder: 0
Isuri Va por buen camino
Es que no se como no se me ha ocurrido antes, sin mas, en un momento dado queria que no se viera esa imagen, y mas tarde que se volviera a ver. al principio he optado x la idea de destruir y volver a crear la imagen, en eso tenia el problema, en crearla en tiempo de ejecucion. pero es tonteria hacer esto, teniendo la propiedad 'visible'; por lo que lo unico que he hecho ha sido poner visible a false o true, y la imagen la he creado en tiempo de diseño.

gracias x todo dec!!
Responder Con Cita
  #10  
Antiguo 07-04-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pues sí, ahí estaba otra solución.
__________________
David Esperalta
www.decsoftutils.com
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
Cargar un PDF en un TImage. afxe Gráficos 5 04-03-2008 22:28:24
Cargar una imagen jpg en un TImage giropau C++ Builder 7 19-05-2007 07:11:07
Cargar imagen en un TImage luxus OOP 3 16-02-2007 17:06:23
cargar una foto en Timage omy Gráficos 5 09-04-2005 03:50:08
Cargar *.jpg en un TImage esocrates Gráficos 5 13-05-2003 19:56:53


La franja horaria es GMT +2. Ahora son las 10:56:56.


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