[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Gradient Algorithm



Thats cool I thought it was not possible.
Thank you I will try to use this.
Brian

Kris Schnee <kschnee@xxxxxxxxxx> wrote:
Here is some code I built for my interface system (Driftwood),
specifically for filling a rectangular area with a vertical gradient.
That is, it starts with one color at the top and smoothly blends to a
second color at the bottom. You can use this code if you want.

Kris

Code follows, where "self.image" is a surface and "drawing_area" is a
Rect showing the area to fill. "self.background_color" and "_gradient"
are two color tuples, eg. (0,255,255) for cyan.

x1 = self.drawing_area[0]
x2 = x1 + self.drawing_area[2]
a, b = self.background_color, self.background_gradient
y1 = self.drawing_area[1]
y2 = y1 + self.drawing_area[3]
h = y2-y1
rate = (float((b[0]-a[0])/h),
(float(b[1]-a[1])/h),
(float(b[2]-a[2])/h)
)
for line in range(y1,y2):
color = (min(max(a[0]+(rate[0]*line),0),255),
min(max(a[1]+(rate[1]*line),0),255),
min(max(a[2]+(rate[2]*line),0),255)
)
pygame.draw.line(self.image,color,(x1,line),(x2,line))


Try the all-new Yahoo! Mail . "The New Version is radically easier to use" ? The Wall Street Journal