Вниз
Скачать: 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.015 c
1-1193671998
avoid
2007-10-29 18:33
2008.02.03
Как узнать, по какой колонке был клик в TListView?


2-1199304844
aha
2008-01-02 23:14
2008.02.03
зашился в вычислениях CRC , полистал кучу литературы, пообращался


2-1199563356
Vitaliano
2008-01-05 23:02
2008.02.03
Подскажите новичку


15-1199109800
DillerXX
2007-12-31 17:03
2008.02.03
Новогодняя задачка


6-1179126988
allucard
2007-05-14 11:16
2008.02.03
Как выловить Http адрес, и заблокировать доступ




   Наверх