Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   adaptar foto de marco a una imagen (https://www.clubdelphi.com/foros/showthread.php?t=47594)

kapullok_2006 01-09-2007 17:02:55

adaptar foto de marco a una imagen
 
hola,lo que deseo hacer es poner la foto de un marco de un cuadro, y esta que esté superpuesta por una imagen.Lo he hecho poniendo 2 componentes
TImage,pero no queda bien.¿Algun apoyo de cómo hacer que el tamaño de un marco se encaje bien al tamaño de cualquier foto del tamaño que sea?

Saludos.

ArdiIIa 01-09-2007 18:12:59

Cita:

Empezado por kapullok_2006 (Mensaje 227612)
hola,lo que deseo hacer es poner la foto de un marco de un cuadro, y esta que esté superpuesta por una imagen.Lo he hecho poniendo 2 componentes
TImage,pero no queda bien.¿Algun apoyo de cómo hacer que el tamaño de un marco se encaje bien al tamaño de cualquier foto del tamaño que sea?

Saludos.


Hola kapullok_2006 Veo que esta pregunta ya la has formulado en diversas ocasiones y al parecer las respuestas que obtuviste no fueron de tu satisfacción.

También he comprobado que has abierto mas de un hilo con el mismo asunto, y que fuieste digamos "amonestado" por un moderador.

Así que de entrada, si no lo han hecho ya, te voy a recomendar que leas la Guía de estilo.

Como veo que eres una persona muy interesada en el tratamiento de imágenes, te voy a remitir a la que yo creo que es un lugar de referencia en el mundo de Delphi, en lo concerniente a algoritmos y tratamientos gráficos, y mas concretamente a un link, donde seguramente encuentres solución a lo que estás buscando. Así que espero que te sea de utilidad, y de este modo, no tendrás que repetir la misma pregunta varias veces.

Un Saludo.

LINK

paldave 01-09-2007 19:42:40

Hola, como veo que no han respondido a tu pregunta intentaré hacerlo.
La forma más sencilla que veo es que uses las propiedades del canvas de un TImage.
La cosa sería así:
1) Creas 2 TPicture con la imágen del marco en uno y la de la foto en el otro.
2) Creas un TImage en tu form.
3) Usando los métodos StretchDraw y Draw del canvas del TImage dibujas primero el marco de forma que ocupe todo el TImage y luego dibujas sobre el centrada la foto.
Sería algo así:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var Picture1,Picture2:TPicture;
begin
  Picture1:=TPicture.Create;
  Picture1.Bitmap.LoadFromFile('D:\Seguridad\Imágenes\Marco.bmp');
  Picture2:=TPicture.Create;
  Picture2.Bitmap.LoadFromFile('D:\Seguridad\Imágenes\Foto.bmp');
  Image1.Canvas.StretchDraw(Image1.ClientRect,Picture1.Graphic);
  //acá se dibuja la foto centrada, puedes modificar las coordenadas para ponerla donde tu quieras
  Image1.Canvas.Draw((Image1.Width div 2)-(Picture2.Width div 2),(Image1.Height div 2)-(Picture2.Height div 2),Picture2.Graphic);
  Picture1.Free;
  Picture2.Free;
end;

ArdiIIa 01-09-2007 20:02:13

Cita:

Empezado por paldave
Hola, como veo que no han respondido a tu pregunta intentaré hacerlo.

No se si estamos leyendo el mismo foro, o como interpretar este comentario. :eek:

kapullok_2006 03-09-2007 16:07:08

gracias a las personas que me habeis respondido.Intentaré hacer lo que pueda.

Saludos.

kapullok_2006 03-09-2007 16:54:18

para paldave
 
Hola. He escrito el código que me dijiste,pero no me aparece la foto del marco.Pues esto es lo que ocurre:
aparece la foto,pero sólo un trozo de ella y no entera,y no aparece superpuesta a la foto del marco.

Saludos.

paldave 04-09-2007 17:39:14

Lo que pasa es que la foto que usas es más grande que el marco y más grande que el TImage que usas. Para solucionar este problema puedes redimensionar también la foto (además del marco) para que se ajusten ambos.
Sería algo así:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  Picture1,Picture2:TPicture;
const
  AnchoVerticalMarco:Integer = 5;
  AnchoHorizontalMarco:Integer=5;
begin
  Picture1:=TPicture.Create;
  Picture1.Bitmap.LoadFromFile('D:\Seguridad\Imágenes\Esfera reloj.bmp');
  Picture2:=TPicture.Create;
  Picture2.Bitmap.LoadFromFile('D:\Seguridad\Imágenes\yo.bmp');
  Image1.Canvas.StretchDraw(Image1.ClientRect,Picture1.Graphic);
  Image1.Canvas.StretchDraw(Rect(AnchoHorizontalMarco,AnchoVerticalMarco,Image1.Width - AnchoHorizontalMarco,Image1.Height -AnchoVerticalMarco),Picture2.Graphic);
  Picture1.Free;
  Picture2.Free;
end;
donde AnchoHorizontalMarco es el ancho del marco en sus bordes superior e inferior, y AnchoVerticalMarco es el ancho del marco en sus bordes laterales.


La franja horaria es GMT +2. Ahora son las 14:37:19.

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