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
  #21  
Antiguo 27-11-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Estuve pensando en mi idea, y me dije... ummm no se si sería muy vistoso el efecto conseguido.

Y bueno, hice un código... lo puse a prueba y la verdad es que los colores como que no eran los adecuados (tal vez estuve haciendo mal los cálculos con seno y coseno). Luego me dije... para ir de rojo al azul, manteniendo constante un tono de verde, lo más fácil y "vistoso" es simplemente una transformación lineal.

Y es así como me dije que si "x" es el valor del canal Red, "z" es el del canal Blue... entonces se puede ir decrementando el valor de x en una proporción constante "delta" y en la misma medida aumentar el valor de z. Básicamente es esto: (x,y,255 - x) para todo x = 255..0

Y bueno... fue así que se me ocurrió ponerlo a prueba. Me tomé unos minutos anoche y lo hice. He preparado una demostración un tantito chula de mi teoria... y la adjunto aqui.

Pero como hoy he estado ocupado todo el día, vengo y me encuentro esto... tal vez mi idea no sirva de mucho. Pero ya que estoy, y lo tengo... quiero compartilo.

Saludos,
Archivos Adjuntos
Tipo de Archivo: zip MuestraColor.zip (3,8 KB, 38 visitas)
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #22  
Antiguo 27-11-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No dejo de aprender con el código de cHackAll, no dejas de impresionarme amigo.
Haciendo un poco de chapuzas quise que el color estuviese en el form completo, que cuando se amplie o reduzca el color haga lo mismo y que con un trackbar se pudiera cambiar, ademas de hacerlo que siga la linea del form, sin la inclinacion (bueno, metiendome en camisa de once varas)
Logre que se ampliara hacia abajo, que siguiera la linea del form y que cambiara el color con el trackbar (hace un efecto simpatico).
Lo que no me aclaro es como hacer que crezca completo cuando el form se amplia?.
Aqui tu codigo con estos detalles:
Código Delphi [-]
procedure TForm1.TrackBar1Change(Sender: TObject);
var Offset, Value, Index: Cardinal;
begin
 Offset := TrackBar1.Position;
 Value := 255;
 for Index := 0 to 255 * 3 do
  begin
   Canvas.Pen.Color := Value;
   Canvas.MoveTo(Index, 0);
   Canvas.LineTo(Index + 0, Form1.ClientHeight);
   Dec(PByte(Cardinal(@Value) + (Offset mod 3))^);
   Inc(PByte(Cardinal(@Value) + ((Offset + 1) mod 3))^);
   if ((Index + 1) mod 255) = 0 then
    Inc(Offset);
  end;
end;
Bueno, la pregunta es obvia: Como lo hago amigo?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #23  
Antiguo 27-11-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código Delphi [-]
var Bitmap: TBitmap;
 
procedure TForm1.FormCreate(Sender: TObject);
var Offset, Value, Index: Cardinal;
begin
 Bitmap := TBitmap.Create;
 Bitmap.Width := 255 * 3;
 Bitmap.Height := 1;
 Offset := 0;
 Value := 255; // change this
 for Index := 0 to 255 * 3 - 1 do
  begin
   Bitmap.Canvas.Pixels[Index, 0] := Value;
   Dec(PByte(Cardinal(@Value) + (Offset mod 3))^);
   Inc(PByte(Cardinal(@Value) + ((Offset + 1) mod 3))^);
   if ((Index + 1) mod 255) = 0 then
    Inc(Offset);
  end;
end;
 
procedure TForm1.FormPaint(Sender: TObject); // OnPaint, OnResize
begin
 SetStretchBltMode(Canvas.Handle, COLORONCOLOR);
 StretchBlt(Canvas.Handle, 0, 0, ClientWidth, ClientHeight, Bitmap.Canvas.Handle, 0, 0, 255 * 3, 1, SRCCOPY);
end;
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #24  
Antiguo 27-11-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Muy bueno amigo.
Tengo otra duda, cuando el form se redimensiona, se queda marcado el form anterior, osea pintado encima, supongo que se tendria que borrar?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #25  
Antiguo 27-11-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola Caral, con

Código Delphi [-]
procedure TForm1.OnResize(sender : TObject);
begin
     Paint;
end;

lo solucionas. Saludos.
Responder Con Cita
  #26  
Antiguo 27-11-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Muchas gracias Coso, ahora si.
Saludos
__________________
Siempre Novato
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
Ampliar imagen o parte de ella - Interpolacion Lineal Delphius Gráficos 11 27-01-2007 04:00:45


La franja horaria es GMT +2. Ahora son las 01:48:43.


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