Главная » Градиентная заливка и сложение цветов
Градиентная заливка и сложение цветов.
 
 Иногда бывает нужно сложить два или более цветов для получения что-то типа переходного цвета.
 Делается это весьма просто. Координаты получаемого цвета будут равны среднему значению
 соответствующих координат всех цветов.
 
 Например, нужно сложить красный и синий. Получаем
 (255,0,0)+(0,0,255)=((255+0) div 2,(0+0) div 2,(0+255) div 2)=(127,0,127).
 
 В результате получаем сиреневый цвет. Та2: сложить соответствующие координаты,
 потом каждую сумму разделить нацело на количество цветов.
 
 Поговорим теперь о градиентной заливке. Градиентная заливка - это заливка цветом с плавным
 переходом от одного цвета к другому.
 
 Итак, пусть заданы 2 цвета своими координатами ((a1, a2, a3) и (b1, b2, b3)) и
 линия (длиной h пикселов), по которой нужно залить. Тогда каждый цвет каждого пиксела,
 находящегося на расстоянии x пикселов от начала будет равен
 (a1-(a1-b1)/h*x, a2-(a2-b2)/h*x, a3-(a3-b3)/h*x). Теперь, имея линию с
 градиентной заливкой, можно таким образом залить
 совершенно любую фигуру: будь то прямоугольник, круг или просто произвольная фигура.
 
 Вот как выглядит описанный алгоритм:
 
 {Считается, что координаты первого цвета равны (a1, a2, a3), а второго (b1, b2, b3)}
 {Кроме того, линия начинается в координатах (x1,y1), а заканчивается в (x2,y1)}
 
 var h,i: integer;
 
 begin
 h:=x2-x1-1;
 for i:=0 to h do begin
 paintbox1.canvas.pen.color:=rgb(a1-(a1-b1)/h*i, a2-(a2-b2)/h*i, a3-(a3-b3)/h*i);
 paintbox1.canvas.pen.rectangle(i,y1,i+1,y1);
 end;
 end. Категория: Языки программирования | Просмотров: 204