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-11-2006
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
Recuerdo el mensaje original, se perdió en el ultimo desastre . Pero lo puedes encontrar como truco 57 en la sección de trucos.

Pero vamos con tu problema. Puede que sea dar palos de ciego, pero si tienes la propiedad Streach del TImage a true las coordenadas del ratón no se corresponden con las coordenadas del canvas y ahí puede estar el problema. La solución es usar una imagen de 360x256 o traducir las coordenadas del ratón a las del canvas.
Responder Con Cita
  #2  
Antiguo 02-11-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 22
Deiv Va por buen camino
Hola,
Sin tener en este momento Delphi a mano, la verdad es que si recuerdo que lo tengo con la propiedad stretch, veré...... como hago eso de traducir las coordenadas, imagino será al tamaño que tengo verdad?
Responder Con Cita
  #3  
Antiguo 02-11-2006
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
Prueba con algo así:
Código Delphi [-]
function RatonAImagenX(Imagen: TImage; x: integer): integer;
begin
  Result:= (x * Imagen.Picture.Width) div Imagen.Width;
end;

function RatonAImagenY(Imagen: TImage; y: integer): integer;
begin
  Result:= (y * Imagen.Picture.Height) div Imagen.Height;
end;

Aunque lo ideal seria no tener que ajustar la imagen, si necesitas un tamaño diferente a 360x256 lo mejor seria cambiar el algoritmo que genera el degradado para ajustarlo al nuevo tamaño. ¿que tamaño necesitas?
Responder Con Cita
  #4  
Antiguo 03-11-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 22
Deiv Va por buen camino
Gracias Seoane, no entendí como llamar a dichas funciones; pero:

Mi TIMage tiene el tamaño de 260 x 160
Responder Con Cita
  #5  
Antiguo 03-11-2006
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
Las funciones se utilizan asi, donde tienes esto:

Código Delphi [-]
Clr := Image1.Canvas.Pixels[X, Y];

Coloca esto:
Código Delphi [-]
Clr := Image1.Canvas.Pixels[RatonAImagenX(Image1,X), RatonAImagenY(Image1,Y)];

En cuanto a modificar el algoritmo, déjeme ver si tengo un ratito libre y lo modifico.
Responder Con Cita
  #6  
Antiguo 03-11-2006
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 pues parece que si tenia tiempo , aquí te dejo el algoritmo modificado para crear un degradado de 258x160 (el ancho tiene que ser múltiplo de 6). Espero que te sirva, acuerdate de modificar el tamaño del TImage y poner Streach a FALSE

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  h,s,b: integer; //Tono, Saturacion, Luminosidad
  i,j: integer;
  x,y,z: integer;
begin
  Image1.Picture.Bitmap.Width:= 258;
  Image1.Picture.Bitmap.Height:= 160;
  with Image1.Canvas do
    begin
      Brush.Color:= clBlack;
      FillRect(ClipRect);
      b:= 255; // Luminosidad entre 0 y 255
      for h:= 0 to 257 do
        begin
          i:= ((h mod 43) * b) div 43;
          j:= b - i;
          for s:= 0 to 160 do
            begin
              x:= i + ((b-i) * s) div 160;
              y:= j + ((b-j) * s) div 160;
              z:= (b * s) div 160;
              case (h div 43) of
                0: Pixels[h,s]:= RGB(b,x,z);
                1: Pixels[h,s]:= RGB(y,b,z);
                2: Pixels[h,s]:= RGB(z,b,x);
                3: Pixels[h,s]:= RGB(z,y,b);
                4: Pixels[h,s]:= RGB(x,z,b);
                5: Pixels[h,s]:= RGB(b,z,y);
              end;
            end;
        end;
    end;
end;

Recuerda que al ya no usar la propiedad Streach ya no tienes que preocuparte por las corregir las coordenadas del ratón.

Última edición por seoane fecha: 03-11-2006 a las 14:01:04.
Responder Con Cita
  #7  
Antiguo 03-11-2006
Deiv Deiv is offline
Miembro
 
Registrado: jul 2005
Ubicación: La Paz - Bolivia
Posts: 364
Poder: 22
Deiv Va por buen camino
Cita:
Empezado por Seoane
Bueno pues parece que si tenia tiempo
Gracias Seoane estoy en un CiberCafe Internet, llegando a casa lo probaré
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
capturar imagenes palets API de Windows 2 26-09-2006 20:34:07
ListBox degradado Deiv OOP 4 17-01-2006 14:57:27
Aspecto Degradado de un form Rabata Varios 4 11-11-2005 12:42:56
Capturar Evento piccolo2101 Varios 4 27-10-2005 16:56:35
Degradado sobre cualquier elemento gluglu Varios 0 19-03-2005 16:13:33


La franja horaria es GMT +2. Ahora son las 11:40:33.


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