FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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:
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."... |
#3
|
|||
|
|||
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... |
#4
|
||||
|
||||
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. |
#5
|
|||
|
|||
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.
|
#6
|
||||
|
||||
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":
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:
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í:
Esa instrucción no destruirá el objeto "TImage", de modo que podrá cargarse en el mismo una nueva imagen (o no). |
|
|
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 |
|