-
Доброе время суток. Уважаемые мастера.
Вот попытался сделать плавный переход цвета
на канве с синего до лайма.
код
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. -
В VCL работает нормально.
Неправда. -
если посмотреть по ближе
http://narod.ru/disk/25592194000/color%20effect.rar.html -
Мой пардоны. неверно.
form.Canvas.FillRect(form.ClientRect); -
...
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. -
to Jon
Thank you:) again