Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.03;
Скачать: 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 вся ветка

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

Наверх




Память: 0.46 MB
Время: 0.028 c
15-1198567473
Vlad Oshin
2007-12-25 10:24
2008.02.03
Электричество. Объясните.


10-1142943441
tower
2006-03-21 15:17
2008.02.03
Подключение в ASP СОМ обьекта сделанного в Delphi


15-1198784364
fics
2007-12-27 22:39
2008.02.03
1C


15-1198838544
user_
2007-12-28 13:42
2008.02.03
Кто бывает частенько в краснодарском крае


15-1198495044
@!!ex
2007-12-24 14:17
2008.02.03
Проблема зрения..