Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 09-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, este ejemplo usa un paintbox

Código Delphi [-]
procedure TForm1.Gradient(cl,ds : TColor; perc : double);
var
        ri,gi,bi : integer;
        rf,gf,bf : integer;
        pr,pg,pb : double;
        r,g,b    : integer;
        y : integer;
        c : TColor;
        s : string;
        wp : integer;
begin

with PaintBox1 do
begin
        ri := (cl and $FF);
        gi := (cl and $FF00) div $100;
        bi := (cl and $FF0000) div $10000;

        rf := (ds and $FF);
        gf := (ds and $FF00) div $100;
        bf := (ds and $FF0000) div $10000;

        pr := (rf - ri) / (Height/2);
        pg := (gf - gi) / (Height/2);
        pb := (bf - bi) / (Height/2);

        wp := Round(Width*perc/100);

        c := 0;
        for y := 0 to (Height div 2)  do
        begin
          r := ri + round(pr * y);
          g := gi + round(pg * y);
          b := bi + round(pb * y);

          c := RGB(r,g,b);

          Canvas.Pen.Color := c;
          Canvas.MoveTo(0,y);
          Canvas.LineTo(wp,y);
          Canvas.Moveto(0,Height-y);
          Canvas.LineTo(wp,Height - y);
        end;
        s := formatFloat('0.00%',perc);
        canvas.Brush.style := bsSolid;
        canvas.brush.color := clBlack;
        canvas.FillRect(Rect(wp,0,Width,Height));
        canvas.Brush.style := bsClear;
        canvas.Font.Color := ($00FFFFFF) xor canvas.Pixels[Width div 2,Height div 2];
        canvas.Textout((width - Canvas.Textwidth(s))div 2,(Height - Canvas.TextHeight(s)) div 2,s);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
        i : integer;
begin
        doublebuffered := true;
        PaintBox1.Canvas.FillRect(Rect(0,0,PaintBox1.Width,PaintBox1.Height));
        PaintBox1.Canvas.Brush.Style := bsClear;
        PaintBox1.Canvas.Font.Style := [fsBold];
        for i := 0 to 10000 do
        Gradient($00FF0000,$00FFFFFF,i/100);
       // Gradient(clGreen,clYellow,i/100);
end;

podrias crear un componente a medida poniendo eso en el evento onpaint. Vamos, que es solo un ejemplo, que se puede mejorar bastante.

Última edición por coso fecha: 09-08-2008 a las 23:34:02.
Responder Con Cita
 



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
como usar el progressbar con un timer kurono Varios 1 09-04-2008 10:18:22
Emule Vivi Varios 11 15-03-2007 15:29:16
Speed Button que se quede down como en emule Nbull Varios 5 01-02-2006 09:20:34
"Cuarto" Boton en barra de titulo (como el EMule) DTAR Varios 3 05-01-2006 00:12:24
EMule rastafarey Linux 0 06-07-2004 21:53:03


La franja horaria es GMT +2. Ahora son las 03:38:47.


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