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 26-01-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Bueno, una primera aproximacion seria la siguiente:

Código Delphi [-]
type
  TRGB = array[1..3]of Byte;

procedure Ampliar(Imagen: TPicture; Z: Integer);
var
  Bitmap: TBitmap;
  P1, P2, P3, P4: ^TRGB;
  i, j, k: Integer;
  x: Integer;
begin
  if Z < 1 then
    Exit;
  Bitmap:= TBitmap.Create;
  try
    Bitmap.Width:= Imagen.Width;
    Bitmap.Height:= Imagen.Height;
    Bitmap.Canvas.Draw(0,0,Imagen.Graphic);
    Bitmap.PixelFormat:= pf24bit;
    Imagen.Assign(Bitmap);
    Imagen.Bitmap.Width:= Bitmap.Width * Z;
    Imagen.Bitmap.Height:= Bitmap.Height * Z;
    for j:= 0 to Imagen.Bitmap.Height - 1 do
    begin
      // Actuales
      P1:= Bitmap.ScanLine[j div Z];
      P2:= Imagen.Bitmap.ScanLine[j];
      // Anteriores
      if j >= Z then
        P3:= Bitmap.ScanLine[(j div Z)-1]
      else
        P3:= P1;
      P4:= P1;
      for i:= 0 to Bitmap.Width - 1 do
      begin
        for x:= 1 to Z  do
        begin
          for k:= 1 to 3 do
          begin
            P2^[k]:= P4^[k] + (((P1^[k] - P4^[k]) * x) div Z);
            P2^[k]:= P2^[k] + (((P3^[k] - P2^[k]) * (z-(j mod Z))) div Z);
          end;
          inc(P2);
        end;
        P4:= P1;
        inc(P1);
        inc(P3);
      end;
    end;
  finally
    Bitmap.Free;
  end;
end;

// Por ejemplo, Zoom x3 
  Ampliar(Image1.Picture,3);
  Image1.Refresh;

Puede que tenga fallos, es solo una primera aproximación, además tiene que haber una solución mejor donde el Zoon no tenga que ser un numero entero. Todo se andará ...

Última edición por seoane fecha: 26-01-2007 a las 18:54:22.
Responder Con Cita
  #2  
Antiguo 26-01-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Muchísimas gracias por tu infinita ayuda

seoane, muchísimas gracias por brindar nuevamente tus conocimientos en la materia. A simple vista no lo entiendo mucho... pero como tu dices:

Cita:
Empezado por seoane
(...)una primera aproximacion(...)
Voy a analizar y estudiar con lujo, detalles, y objetivamente tu algoritmo.
Primeramente deberé refrescar mi cerebro. Nunca me ha pasado algo así: generalmente logro "sacar" algoritmos en cuestión de no más de 3 días... pero quedarme en blanco... es de no creer! Se nota que lo he forzado mucho.

Bueno, unas horas de siesta y retorno el trabajo.
Nuevamente muchas gracias, como he dicho antes: hay lugar en mi lista de agradecimientos y cumplidos para todos aquellos que han aportado altruistamente sus conocimientos y ayuda.

¡Muchas gracias!
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 27-01-2007
Avatar de Zeta
Zeta Zeta is offline
Miembro
 
Registrado: feb 2005
Posts: 215
Poder: 22
Zeta Va por buen camino
¿QUerés hacer algo como esto? O quizás te orienta ya que tiene el source
http://img255.imageshack.us/img255/5277/dibujowf4.jpg

Hay un componente que te lo permite:

TMagnify 2.0 ( FULL SOURCE free )

Saludos
__________________
And I'd like an hour on the holodeck with Seven of Nine.
Responder Con Cita
  #4  
Antiguo 27-01-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Zeta, de lo que se trata es de implementar un algoritmo de interpolación. El componente que tu indicas se limita a usar las funciones de dibujo de la API para agrandar el dibujo, y te puedo asegurar que la api, en este caso, no utiliza ningún tipo de interpolación . Además como ya explico Delphius necesita implementar su propio algoritmo, no le sirve con utilizar funciones de la API o librerías de terceros.
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
¿Crear email con imagen como parte del contenido del texto? burasu Varios 6 07-04-2006 20:11:30
Crear directorio con lista lineal davitcito Varios 4 07-05-2005 08:20:01
Programa que agrande una parte de la imagen maravert Gráficos 0 05-08-2004 02:12:50
Ampliar un campo en un dbgrid hogol Varios 1 21-11-2003 17:02:40


La franja horaria es GMT +2. Ahora son las 21:24:22.


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