Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

Градиентная заливка формы   Найти похожие ветки 

 
Дана   (2004-06-08 21:51) [0]

Подскажите, пожалуйста, как сделать градиентную заливку формы из левого верхнего ула в правый нижний. Горизонтальный и вертикальный градиент могу сделать, а начсёт этого - никаких идей. А очень надо :)
Буду признательна за помощь.


 
Andy BitOff ©   (2004-06-08 22:01) [1]

А как горизонтальный делаешь?


 
Minori   (2004-06-08 22:06) [2]

Вот, кто-то уже обо всем давно позаботился:
http://www.delphimaster.ru/articles/grad/index.html


 
Дана   (2004-06-08 22:08) [3]

Вот горизонтальный.


procedure TForm1.GradientRect (FromRGB, ToRGB: TColor; Canvas: TCanvas);
var
 RGBFrom : array[0..2] of Byte; { from RGB values }
 RGBDiff : array[0..2] of integer; { difference of from/to RGB values }
 ColorBand : TRect; { color band rectangular coordinates }
 I : Integer; { color band index }
 R : Byte; { a color band"s R value }
 G : Byte; { a color band"s G value }
 B : Byte; { a color band"s B value }
begin
 { extract from RGB values}
 RGBFrom[0] := GetRValue (ColorToRGB (FromRGB));
 RGBFrom[1] := GetGValue (ColorToRGB (FromRGB));
 RGBFrom[2] := GetBValue (ColorToRGB (FromRGB));
 { calculate difference of from and to RGB values}
 RGBDiff[0] := GetRValue (ColorToRGB (ToRGB)) - RGBFrom[0];
 RGBDiff[1] := GetGValue (ColorToRGB (ToRGB)) - RGBFrom[1];
 RGBDiff[2] := GetBValue (ColorToRGB (ToRGB)) - RGBFrom[2];

 { set pen sytle and mode}
 Canvas.Pen.Style := psSolid;
 Canvas.Pen.Mode := pmCopy;

 { set color band"s left and right coordinates}
ColorBand.top := 0;
ColorBand.bottom:= canvas.ClipRect.Bottom-Canvas.ClipRect.Top;

 for I := 0 to $ff do
 begin
   { calculate color band"s right and left coordinates}
   ColorBand.Left := MulDiv (I , canvas.ClipRect.Right-Canvas.ClipRect.Left, $100);
   ColorBand.Right := MulDiv (I + 1,canvas.ClipRect.Right-Canvas.ClipRect.Left, $100);

   { calculate color band color}
   R := RGBFrom[0] + MulDiv (I, RGBDiff[0], $ff);
   G := RGBFrom[1] + MulDiv (I, RGBDiff[1], $ff);
   B := RGBFrom[2] + MulDiv (I, RGBDiff[2], $ff);
   { select brush and paint color band}
   Canvas.Brush.Color := RGB (R, G, B);
   Canvas.FillRect (ColorBand);
 end;
end;


 
Дана   (2004-06-08 22:20) [4]


> Вот, кто-то уже обо всем давно позаботился:
> http://www.delphimaster.ru/articles/grad/index.html


Статья классная, но только того, что мне надо там нет... :(


 
Dimaxx   (2004-06-08 23:26) [5]

В LMD есть очень мощная система градиентов. Могу выслать модуль с этими градиентами.


 
Amoeba ©   (2004-06-09 11:31) [6]


> Dimaxx   (08.06.04 23:26) [5]

Согласен, лучше всего воспользоваться отличной библиотекой LMDTools. Поддерживает кучу стилей градиентной заливки. Сокращенная версия библиотеки бесплатная, окажется полезной во многих случаях.
http://www.lmdinnovative.com/

Полную версию с исходниками (нет Help"а) можно взять на
http://www.tdelphi.spb.ru
Там еще можно найти на халяву массу библиотек.



Страницы: 1 вся ветка

Текущий архив: 2004.08.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
10-1033544642
mmb
2002-10-02 11:44
2004.08.29
Неужели мой вопрос настолько сложный, что никто даже не пытается?


3-1091645615
Viktor
2004-08-04 22:53
2004.08.29
Получить описание поля в Access


4-1089908217
BaG
2004-07-15 20:16
2004.08.29
Как получить доступ к памяти любого процесса в системе?


1-1092306205
Cosinus
2004-08-12 14:23
2004.08.29
Поиск в бинарном файле по маске


3-1090002748
Mister
2004-07-16 22:32
2004.08.29
1 или 2 млн. записей