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
  #1  
Antiguo 21-08-2011
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Arrow Procedure y Funcion nuevos DrwGradientLine y LabLinea

Hola Compañeros Como siempre os pongo dos trozos de códigos nuevo, un procedure que dibuja una linea gradient y una funcion que hice para crear separaciones, espero os sirvan de ayuda

Código Delphi [-]
procedure DrawGradientLine(bCanvas:
TCanvas; X, Y, Width,height: integer;
StartColor, EndColor: TColor;Parejo:boolean);
//------------------------------------------------------------------------------
//****************************************************[ DRAWGRADIENTLINE ]******
//  Bajado originalmente de codeunivers.com/…/draw_gradient_line
//  Modificado por mi, se añade  la posibilidad de ancho y de si estilo continuo
//  21/08/2011           JLGT
//------------------------------------------------------------------------------
//  bCanvas     Canvas sobre el qiue dibujar la linea
//  X           Posición left a comenzar
//  Y           Posición Top a cpmenzar
//  Width       Ancho de la linea
//  Hight       Alto de la linea  (Mia)
//  StarColor   Color de inicio
//  EndColor    Color Final
//  Parejo      Si es truedibuja todas las lineas empezando igual,
//              si es false cada inicio de linea incrementa 1 desplazandose los colores 
//              diagonalmente (Mia)
//--------------------------------------------------------------EJEMPLO---------
//   Form1.DoubleBuffered:=True;
//   DrawGradientLine(Form1.Canvas,0,0,Form1.Width,5,clRed,clLime,True);
//   DrawGradientLine(Form1.Canvas,0,Form1.Height-43,Form1.Width,5,clRed,clLime,True);
//   DrawGradientLine(Form1.Canvas,0,0,50,Form1.Height,clBlack,clRed,True);
//   DrawGradientLine(Form1.Canvas,Form1.Width-66,0,50,Form1.Height,clLime,clBlack,True);
//------------------------------------------------------------------------------
var
fX,hy:integer;
dr,dg,db:Extended;
C1,C2:TColor;
r1,r2,g1,g2,b1,b2:Byte;
R,G,B:Byte;
cnt:integer;
begin
  if Parejo=False then  cnt:=0;
  for HY := y to y+height - 1 do
  begin
    if Parejo=True then cnt := 0;
    C1 := StartColor;
    C2 := EndColor;
    R1 := GetRValue(C1) ;
    G1 := GetGValue(C1) ;
    B1 := GetBValue(C1) ;
    R2 := GetRValue(C2) ;
    G2 := GetGValue(C2) ;
    B2 := GetBValue(C2) ;
    dr := (R2-R1) / Width;
    dg := (G2-G1) / Width;
    db := (B2-B1) / Width;
    for fX := X to X + Width - 1 do
    begin
      R := R1+Ceil(dr*cnt) ;
      G := G1+Ceil(dg*cnt) ;
      B := B1+Ceil(db*cnt) ;
      bCanvas.Pixels[fX, hy] := RGB(R,G,B);
      inc(cnt);
    end;
  end;
end;

function TForm1.LabLinea(Cap,Carc:string;Ali:TAlignment;Whi:Integer):string;
//------------------------------------------------------------------------------
//************************************************************[ LabLinea ]******
//  Función propia  JLGT 20/08/2011
//  texto con relleno a elejir posicion, para separaciones
//------------------------------------------------------------------------------
//  Cap   Cadena de Texto
//  Car   Caracter
//  Ali   taLeftJustify   cadena a la izquierda, Relleno a la derecha
//        taRightJustify  cadena a la derecha, Relleno a la izquierda
//        taCenter        cadena al centro, relleno a ambos lados
//  Whi
//---------------------------------------------------------------EJEMPLO--------
//
//  Label1.Caption:=LabLinea('Opciones',' ',taCenter,200);
//
//  Si el Label1 Cambiamos las caracteristicas del Font a negrita y subrallado,
//  queda un curios separador
//------------------------------------------------------------------------------

var VarIAnc,VariDif:Integer;
    VarSCad:string;
    lab:TLabel;
begin
    lab:=TLabel.Create(Self);
    lab.Parent:=Self;
    VarIAnc:=lab.Canvas.TextWidth(Cap);
    VariDif:=whi-VarIAnc;
    VarSCad:=Cap;
    case Ali of
      taLeftJustify: begin
                        while lab.Canvas.TextWidth(VarSCad) < Whi do  VarSCad:=VarSCad+Carc;
                     end;
      taRightJustify:begin
                        while lab.Canvas.TextWidth(VarSCad)  < Whi do  VarSCad:=Carc+VarSCad;
                     end;
      taCenter:begin
                        while lab.Canvas.TextWidth(VarSCad) < lab.Canvas.TextWidth(Cap)+(VariDif/2) do  VarSCad:=VarSCad+Carc;
                        while lab.Canvas.TextWidth(VarSCad) < whi do  VarSCad:=Carc+VarSCad
               end;
    end;
   Result:=VarSCad
end;
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
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
Funcion o procedure para apagar sub carpetas Paulao Varios 4 20-07-2011 17:15:26
llamar a procedure desde otra procedure anubis Varios 23 04-03-2010 18:44:37
puntero a un procedure en un procedure como parametro fcios Varios 2 14-03-2009 03:41:22
Chat nuevos Karel Garcell Windows 5 04-03-2008 16:25:57
Funcion o Procedure @-Soft Conexión con bases de datos 3 01-11-2003 12:53:48


La franja horaria es GMT +2. Ahora son las 18:31:27.


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