Вниз
Скачать: CL | DM;

Градиент   Найти похожие ветки 

 
Quelle   (2007-03-04 17:26) [0]

Уважаемые мастера.
Скажите, как сделать
градиент через 3 цвета, как
в Photoshope (например, от белого к черному через синий).

Вот пример, но только через красный,
с остальными не получается.

procedure PhotoshopGradient;
var
d:integer;
x,y:integer;
begin
for y:=0 to 255 do
for x:=0 to 255 do
begin
  if (255-x-y) >=0 then
     d:=255-x-y;
  Form1.Canvas.Pixels[x,y]:=RGB(255-y,d,d);
end;
end;


 
GrayFace ©   (2007-03-04 18:39) [1]

Цвета смешиваются так:
RGB((R1*P1 + R2*P2 + R3*P3) div (P1+P2+P3), (G1*P1 + G2*P2 + G3*P3) div (P1+P2+P3), (B1*P1 + B2*P2 + B3*P3) div (P1+P2+P3));
где Ri, Gi, Bi - компоненты i-го цвета, Pi - веса.

Веса можно взять так:
P1:= 256*y div (Height-1)
P2:= 256*(Width-1 - x) div (Width-1)
P3:= 256*(Height-1 - y) div (Height-1)

Чтобы работало быстро, надо Width и Height сохранить в локальных переманных и не обращаться к Canvas.Pixels, а работать напрямую со ScanLine-ами. См. модуль QPix.pas в http://www.grayface.nm.ru/PSPak.rar (не мой, но я к нему тоже приложил руку). Есть статья от Mbo по этому поводу, поищи слова "Быстрый доступ к пиксел".



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.013 c
2-1199588278
Артем
2008-01-06 05:57
2008.02.03
IStorage и WebBrowser


15-1198607831
vrem_
2007-12-25 21:37
2008.02.03
Что планируете на следующий год?


2-1199966820
Dana
2008-01-10 15:07
2008.02.03
Tab в DBGrid


2-1199783361
Washington
2008-01-08 12:09
2008.02.03
Программа, не имеющая формы


2-1199495124
bagira
2008-01-05 04:05
2008.02.03
Динамическое создание Label ов




   Наверх