Конференция "KOL" » Color Effect [Delphi, Windows]
 
  • RusSun © (02.10.10 21:28) [0]
    Доброе время суток. Уважаемые мастера.

    Вот попытался сделать плавный переход цвета
    на канве с синего до лайма.
    код

    var
    ...
    deltaR,deltaG,deltaB:Double;
    colorFrom,colorTo:Tcolor;

    //область для процедур
    procedure FormPaint(Dummy : Pointer;Sender: TObject);
    begin
    colorFrom:=clblue;//начальный цвет
    colorTo:=clLime;//конечный цвет
    //шаг для каждой компонеты RGB-цвета
    deltaR:=(GetRValue(colorTo)-GetRValue(colorFrom))/form.Width;
    deltaG:=(GetGValue(colorTo)-GetGValue(colorFrom))/form.Width;
    deltaB:=(GetBValue(colorTo)-GetBValue(colorFrom))/form.Width;
    For I:=0 to form.Width do begin
    //задаём цвет кисти, составленной из трех компонентов
    form.Canvas.Brush.Color:=RGB(
    round(deltaR*i+GetRValue(colorFrom)),
    round(deltaG*i+GetGValue(colorFrom)),
    round(deltaB*i+GetBValue(colorFrom)));
    form.Canvas.FillRect(form.ClientRect);
      end;
    end;


    Вот только никакого перехода нет. Один лайм.:(
    В VCL работает нормально.
    Delphi 7/Win XP.
  • Vladimir Kladov © (02.10.10 23:38) [1]
    В VCL работает нормально.
    Неправда.
  • RusSun © (03.10.10 07:30) [2]
    если посмотреть по ближе
    http://narod.ru/disk/25592194000/color%20effect.rar.html
  • RusSun © (03.10.10 07:37) [3]
    Мой пардоны. неверно.
    form.Canvas.FillRect(form.ClientRect);
  • RusSun © (03.10.10 08:05) [4]
    ...
    round(deltaG*i+GetGValue(colorFrom)),
    round(deltaB*i+GetBValue(colorFrom)));Rect.Left:=i;
    Rect.Top:=0;
    Rect.Right:=i+1;
    Rect.Bottom:=Form.Height;
    form.Canvas.FillRect(Rect);

  • QAZ (04.10.10 14:05) [5]
    какой "шикарный" велосипед получился...
    а GradientFill из GDI использовать не?
  • RusSun © (05.10.10 16:16) [6]
    toQAZ ссылочку можно?
  • Dufa © (05.10.10 16:33) [7]
  • RusSun © (05.10.10 16:44) [8]
    to Dufa спасибо;)
  • Jon © (06.10.10 02:32) [9]

    program Gradient;

    uses KOL;

    begin
     Applet := NewForm(nil, '');
     Applet.Border := 0;
     with NewGradientPanel(Applet, clBlue, clLime)^ do
     begin
       Align := caClient;
       GradientStyle := gsHorizontal;
     end;
     Run(Applet);
    end.

  • RusSun © (06.10.10 05:34) [10]
    to Jon
    Thank you:) again
 
Конференция "KOL" » Color Effect [Delphi, Windows]
Есть новые Нет новых   [134430   +3][b:0][p:0.001]