Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-12-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Unhappy Imitar Fondo Web en Delphi

Hola,
Me preguntaba, y de repente sea una pregunta muy obvia y sencilla, porque estoy aprendiendo a construir Páginas Web, pero por salir de dudas pregunto:

Al construir las Páginas Web, uno le da fondo como imagen Gifs o JPEGs verdad? por ejemplo una imagen construida de 1150x24 ó 1000x10 bastaría para Fondo de una Página, esta imagen se repite en todo el fondo y Alto de la Página Web. Mi pregunta es, ¿Con Delphi habrá alguna forma de realizar este proceso en una TImage o en un TPaintBox de tal manera que esta imagen "delgada" se coloque una sobre otra y me quepa en todo el alto de estos componentes?

El objetivo de la pregunta es la siguiente, he visto fondos en algunas páginas Web que simulan un cuaderno en espiral (o sea el Gif de la Página Web tiene una sola espiral [imagen delgada de un alto pequeño que arriba mencioné] y al cargar la Página aparenta cual si fuera un cuaderno espiral COMPLETO) necesito algo parecido que quepa en el alto de una TImage, no puedo utilizar la propiedad Stretch ya que se deforma, y si la cargo así no más se ve solo la imagen delgada sin caber al alto de mi Timage.

Tal vez las soluciones estén de otra forma:

- Crear una nueva imagen del alto que desee con un programa gráfico (Photoshop) e ir uniendo (con CTRL+V) la imagen delgada acomodándolas una debajo de otra hasta lograr una única imagen del alto deseado, grabarlo y jalarlo a la TIMage. MUCHO TRABAJO.

- Colocar muchas TImage en columna en el Form de tal manera que aparente un cuaderno espiral. No lo veo adecuado.

- Quizá unir con algún Programa esta Imagen al alto deseado ¿Existe algún programa que una (junte) imágenes de la forma que estoy explicando, una sobre otra?

- Bueno finalmente de repente por código en Delphi se puede realizar este trabajo ¿será posible?, es ahí donde planteo mi pregunta por favor.
Deiv
Ps.- Con el formato de las imágenes no habría problema, ya que lo transformaría a BMP
Responder Con Cita
  #2  
Antiguo 05-12-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Una idea:

En un Bitmap (TBitmap) cargas la imagen de la espiral. En lugar de un TImage usa un PaintBox y en su evento OnPaint usas el método PaintBox.Canvas.Draw:

Código Delphi [-]
// Calculas cuantos "pedazos" necesitas
N := PaintBox1.Height div BitmapEspiral.Height;

// Dibujas en el canvas
for Y := 0 to N do
begin
  PaintBox.Canvas.Draw(0, Y*BitmapEspiral.Height, BitmapEspiral);
end;

Algo así, tú llenas los detalles.

// Saludos
Responder Con Cita
  #3  
Antiguo 05-12-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Gracias en este momento no tengo Delphi a mano, lo probaré en casa,
¿No hay forma de llevar el código a una TImage? Digo esto ya que he tenido problemas con el TPaintBox ultimamente debido a que luego de dibujar al cambiar de ventana se me borra.
Responder Con Cita
  #4  
Antiguo 05-12-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Posiblemente se te borra porque dibujas en él y te olvidas. Pero debes hacerlo en su evento OnPaint para que se redibuje cada vez que sea necesario. Aquí está el ejemplo más detallado y ya probado

Código Delphi [-]
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
  N, Y: Integer;

begin
  // Pintas el fondo del paintbox (blanco en este caso)
  Paintbox1.Canvas.Brush.Color := clWhite;
  PaintBox1.Canvas.Brush.Style := bsSolid;
  PaintBox1.Canvas.FillRect(PaintBox1.ClientRect);

  // Calculas cuantas veces debes repetir la espiral
  N := PaintBox1.Height div Espiral.Height;

  for Y := 0 to N - 1 do
  begin
    PaintBox1.Canvas.Draw(0, Y*Espiral.Height, Espiral);
  end;
end;

Espiral es un TBitmap que creas al principio:

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Espiral := TBitmap.Create;
  Espiral.LoadFromFile('asterisk_orange.bmp');
end;

y destruyes al final:

Código Delphi [-]
procedure TForm1.FormDestroy(Sender: TObject);
begin
  Espiral.Free;
end;

// Saludos
Responder Con Cita
  #5  
Antiguo 05-12-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
A parte de hacerlo manualmente, si deseas utilizar esta imagen como fondo de un form (eso no me ha quedado claro), puedes utilizar un componente llamado TUpTiler (en torry está); Funciona muy bien, es sencillo, free, con fuentes, y además permite muchas opciones para colocar una imagen de fondo (strech, centrado, mosaico,...); Además permite rellenar con un color fijo o con degradados.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 05-12-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Wink Gracias!

Gracias Roman, una vez mas demostrado que en Delphi todo se puede.
Cita:
Empezado por Roman
Posiblemente se te borra porque dibujas en él y te olvidas
Bueno esa parte no me daba cuenta, y casi en muchas de mis aplicaciones que iba trabajando fui cambiando a TImage, dejando de lado TPaintBox, ¿Cual la diferencia de tu código en una TIMage?.... o... es más presentable en un TPaintBox?

Neftali, probaré tu sugerencia del Componente TUpTiler, nunca lo he manejado, pues en realidad el objetivo era para colocar en alguna parte del Form (no en todo) y que sirviera a manera de Tutorial (cual si leer un texto de un cuaderno espiral), he ahí la insistencia del mismo espiral.

Última edición por Deiv fecha: 06-12-2006 a las 15:13:48.
Responder Con Cita
  #7  
Antiguo 06-12-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 19
Deiv Va por buen camino
Thumbs up

He probado efectivamente esta vez el código de Román como el Componente de TUpTiler (muy sencillo de manejar) que recomendó Neftali y ambos se parecen, muy buenos. Thanks!
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
¿Como Imitar el click de biMinimize? LuCkY_007 API de Windows 2 07-02-2006 11:16:24
Imagen de Fondo lucasarts_18 Gráficos 7 16-06-2005 17:03:04
Imitar Edit Tab Order ingel Varios 0 18-03-2005 22:29:03
un dbgrid con fondo! nesetru Gráficos 1 05-02-2004 00:58:00
Fondo de escritorio Tonio Varios 4 13-11-2003 22:58:38


La franja horaria es GMT +2. Ahora son las 00:57:42.


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