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 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
  #2  
Antiguo 03-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, yo mismo me responderá a la pregunta de como hacer para que funcione con sun jpg, lo que tenemos que usas son las funciones Draw o StretchDraw y no CopyRec que según he leido solo sirve si tienes cargado un .bmp, como es el caso, por eso si quería poner una jpg me daba una excepción.

Saludos!
Responder Con Cita
  #3  
Antiguo 03-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
Creo que esta correcto. Me refiero que básicamente hace lo que tiene que hacer y no veo grandes mejoras.

Al final siempre puedes aplicar cambios a la imagen, ya sea de formato, para grabarlo en otro, cambios de tamaño, efectos,....
__________________
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 03-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, usando Draw he simplificado un poco el código, ya que no uso tantas variables como arr, aba, der, izq, tampoco esto
ARect : TRect;

Solo le doy la pocición de X, Y y listo, al menos parece más fácil.

pero tengo una duda, en este código:

Código Delphi [-]
var
R: TRect;
begin
  with Canvas do
  begin
    R.Left := 300;
    R.Top := 250;
    R.Right := 350;
    R.Bottom := 300;
    Brush.Color := clGreen;
    FrameRect( R );
    Draw( 100, 100, Imagen.Picture.Graphic );
  end;
end;

Para qué serviría R.Left, R.Top, etc? supuestamente para la posición de donde se copiará
la nueva imágen, verdad? Pero entonces qué es 100, 100 ? No es eso la nueva posición ?

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 17:10:54.


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