Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-03-2009
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: 19.449
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
Cita:
Empezado por BlackDaemon Ver Mensaje
¿por que siempre trabajan con mapa de bits (.bmp)? y no con un jpg o png ?
Porque es un ejemplo.
Entre otras cosas, porque el ejemplo es antiguo y Delphi sólo soporta PNG desde la última versión. En cuanto a JPEG supongo que se podrá hacer sin problemas.

Cita:
Empezado por BlackDaemon Ver Mensaje
Bueno, lo que no se muy bien como hacer es a la hora de crear mi Timage, de que tamaño lo crearía ? de la suma de todos los lados por anchos de las imágenes a unir ??
Pues eso sería bastante lógico. Crear un TCanvas con la dimensión total (si es que la conoces) y pegar en cada punto la imagen que toca.

Cita:
Empezado por BlackDaemon Ver Mensaje
O iría agrandando de acuerdo a lo que necesite ?
ya que como comenté antes, la imágen resultante puede ser _muy_ grande.. por cierto, hasta cuanto de tamaño puedo crear una imágen en delphi ? ya que había pensando que si se necesita más grande, pues que se creen 2 o 4, dependiendo del máximo soportado por delphi
El ir agrandando no creo que te solucione el problema; Si tienes problemas con una imagen grande, aunque empieces con ella pequeña, cuando la vayas agrandando llegarás a tener el mismo problema.

No se a qué te refieres con muy grande. Supongo que los límites vienen dados por la memoria; De todas formas cualquier tratamiento con imágenes grandes va a ser lento y tedioso. Das pocas explicaciones de qué vas a hacer luego con esa imagen tan grande, pero yo optaría por no trabajar con imágenes gigantescas, sino con imágenes más pequeñas que luego combinas para simuñar una más grande.
__________________
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
  #2  
Antiguo 02-03-2009
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 20
BlackDaemon Va por buen camino
Hola

Bueno, me a quedado todo claro, y tienes razón en eso de ir haciendo más grande las dimenciones del Timage, mejor lo hago a la primera, y si, si conozco el tamaño que tendrá al final.

Ahora lo que intento hacer es esto:
1.- .Crear una clase derivada de Timage (la cual contendrá todo el tablero)
2.- Asignarle el tamaño de si ancho y alto (suma de todas las dimenciones de imágenes pequeñas)
3.- Crear otra clase derivada de Timage (la cual contendrá la imágen pequeña)
4.- Cargo la primera imágen pequeña
5.- Ahora la copiaría a la esquina superior izquiera de Timage grande (Cómo hago esto??)
6.- Lo mismo que 5, pero abajo de la primera
7.- ahora a la derecha y por último abajo de la imágen de la derecha

Bueno, esto suponiendo que tengo 4 imágenes y que para unirlas tendría que seguir esto:

0,0 - 1,0
0,1 - 1,1

So tendría de 3x3 pues así:

0,0 - 1,0 - 2, 0
0,1 - 1,1 - 2, 1
0,2 - 1,2 - 3, 2

Bueno, creo que la lógica la sé, pero lo que no sé es que funciones, propiedades usar para copiar, pegar de un Timage a otro

Luego supongo que con 2 bucles anidados solucionaría el problema

A ver si alguien me puede guiar con un poco de código, desde ya muchas gracias

Saludos!
Responder Con Cita
  #3  
Antiguo 02-03-2009
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: 19.449
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
Cita:
Empezado por BlackDaemon Ver Mensaje
Bueno, creo que la lógica la sé, pero lo que no sé es que funciones, propiedades usar para copiar, pegar de un Timage a otro
De ahí venía la recomendación del ejemplo.
Debes Copiar un TCanvas (n directamente el TImage) sobre otro (cosa que hay en el ejemplo).
TRabajas con TImage, pero para copiar/pegar porciones, lo haces con la propiedad Canvas del TImage.
__________________
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
  #4  
Antiguo 02-03-2009
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: 19.449
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
Tal vez con un ejemplillo quede más claro.
Archivos Adjuntos
Tipo de Archivo: zip Unir imagenes.zip (12,9 KB, 23 visitas)
__________________
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
  #5  
Antiguo 02-03-2009
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 20
BlackDaemon Va por buen camino
Hola

Bueno, lo que hice hasta el momento es esto:

Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var
  x, y, z, i, j : Integer;
  anchoImg, altoImg : Integer;
  ImagenXY : TImage;
  str, lado : String;
begin
  anchoImg := 256;
  altoImg := 256;
  x := 0;
  y := anchoImg;
  z := 3;
  lado := 'DERECHA';

  Memo1.Lines.Add('Creamos el Timage de: ' + IntToStr(anchoImg * z) + 'px * ' + IntToStr(altoImg * z) + 'px');
    for i := 0 to z  - 1 do
    begin
      for j := 0 to z - 1 do
      begin
        str := 'Copiamos la imagen  ' + IntToStr(i) + ',' +IntToStr(j) + ' desde: ' + IntToStr(x) + ' hasta: ' + IntToStr(y) + ' Pos: ' + lado;
        Memo1.Lines.Add(str);
        x := y;
        y := y + anchoImg;
        lado := 'ABAJO';
      end;
      x := 0;
      y := anchoImg;
      Memo1.Lines.Add(' ================ ');
      lado := 'DERECHA';
    end;


end;

Al parecer estoy aplicando las funciones de copiar de Canvas debería estar solucionado, pero ¿Cuales son esas propiedades/funciones ?


EDIT:

Bueno, mientras escribía ya el señor Neftali había puesto 2 post, joer xD
ya me bajé el ejemplo y estoy probando y al parecer solo tengo que incorportarlo en lo que hice, claro, si eso estará bien, cosa que no lo creo jeje

Saludos!

Última edición por BlackDaemon fecha: 02-03-2009 a las 17:00:43. Razón: Mi conexión es más lenta que la de Neftali xD
Responder Con Cita
  #6  
Antiguo 02-03-2009
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: 19.449
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
Código:
Razón: Mi conexión es más lenta que la de Neftali xD
Tu conexión está bien.
Tus dedos son más lentos que los de Neftalí....
__________________
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
  #7  
Antiguo 02-03-2009
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 20
BlackDaemon Va por buen camino
Hola

Le cuento que su ejemplo me a resultado muy útil, creo que ya lo tengo hecho, aunque no sé, siempre pienso que lo hago de mal forma y por eso pegaré aquí el código a ver que opinan los maestros y así aprender de ustedes, esto es para unir imágenes como lo había explicado en los anteriores post, a ver si a más de uno le sirve:

Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var
  x, y, i, j : Integer;

  anchoImg, altoImg : Integer;

  izq, arr, der, aba : Integer;

  ARect : TRect;

  imagen : TImage;
  str, nameImg, path : String;
begin
  anchoImg := 50;
  altoImg := 50;

  izq := 0;
  arr := 0;
  der := anchoImg;
  aba := altoImg;

  x := 2;
  y := 2;


  Memo1.Lines.Add('Creamos el Timage de: ' + IntToStr(anchoImg * x) + 'px * ' + IntToStr(altoImg * y) + 'px');
  map.Height := (anchoImg * x);
  map.Width := (altoImg * y);
    for i := 0 to x  - 1 do
    begin
      for j := 0 to y - 1 do
      begin
        imagen  := TImage.Create(nil);
        imagen.Width := anchoImg;
        imagen.Height := altoImg;

        nameImg := IntToStr(i) + IntToStr(j) + '.bmp';

        str := 'Copiando ' + nameImg + ' Izq: ' + IntToStr(izq) + ' arr: ' + IntToStr(arr) +
             ' der: ' + IntToStr(der) + ' aba: ' + IntToStr(aba);
        Memo1.Lines.Add(str);

        imagen.Picture.LoadFromFile(nameImg);
        ARect.Left := izq;
        ARect.Top := arr;
        ARect.Right := der;
        ARect.Bottom := aba;

        map.Canvas.CopyRect(ARect, imagen.Canvas, imagen.ClientRect);

        arr := arr + AnchoImg;
        aba := aba + altoImg;

        imagen.Free;
      end;
        arr := 0;
        aba := altoImg;
        izq := izq + anchoImg;
        der := der + anchoImg;
        Memo1.Lines.Add(' ================ ');
    end;
  path := ChangeFileExt(Application.ExeName, '.bmp');
  map.Picture.SaveToFile(path);
  MessageDlg('Se ha guardado la imagen con el nombre: ' + path, mtInformation, [mbOK], 0);

Ahora quisiera saber cómo hacer lo mismo pero con imágenes jpg.. y luego guardarlo con el formato que yo quiera.

para que funcione se necesitan 4 imágenes de 50 x 50 llamadas, 00.bmp, 01, 10, 11.bmp. así pegará primero 00, luego abajo el 01, luego arriba a la derecha el 10, y abajo el 11, igual servirá para más de 4 imágenes, solo hay que modificar los valores de x , y

¿Qué les parece?
¿Cómo podría mejorarla?

Saludos!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Unir dos pdf nelem Internet 4 11-02-2009 14:03:07
Unidad de Delphi para crear imágenes ISO de DVDs ISEKO Varios 3 17-10-2008 15:39:30
¿Cómo puedo poner imágenes en mis mensajes en el foro? Paulao Varios 4 22-08-2008 19:33:30
Unir tres qry alcides SQL 6 11-07-2005 17:34:33
Unir Columnas vtdeleon SQL 4 15-06-2005 00:34:49


La franja horaria es GMT +2. Ahora son las 00:07:25.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi