## News:

*NEW* Current Version on STEAM16.793

Webchat:
Visit the chat

## Farbverläufe

#### Quentin

Grundlage ist ein PureBasic-Listing von http://www.purearea.net/pb/CodeArchiv/Graphics/Image/GradientImage.pb

Code (glbasic) Select
`// --------------------------------- //// Project: Farbverlauf// Start: Monday, December 31, 2007// IDE Version: 5.110color1 = RGB(255, 0, 10)color2 = RGB(60, 255, 255)WHILE TRUE  Farbverlauf(100, 0, 500, 200, color1, color2, 0)  Farbverlauf(100, 220, 500, 450, color2, color1, 1)  SHOWSCREENWEND// ------------------------------------------------------------- //// ---  FARBVERLAUF  ---// x1, y1, x2, y2    --- Koordinaten des Rechteckes für den//                       Farbverlauf// co1, col2         --- Farben für den Farbverlauf (von .. bis)// direction         --- 0 = horizontaler Verlauf//                       <> 0 = vertikaler Verlauf// ------------------------------------------------------------- //FUNCTION Farbverlauf: x1, y1, x2, y2, col1, col2, direction  LOCAL i  LOCAL cr1, cg1, cb1  LOCAL cr2, cg2, cb2  LOCAL dr, dg, db  LOCAL red, green, blue  LOCAL count  SplitColor(col1, cr1, cg1, cb1)  SplitColor(col2, cr2, cg2, cb2)  IF direction = 0    count = x2 - x1 + 1  ELSE    count = y2 - y1 + 1  ENDIF    dr = (cr1 - cr2) / count  dg = (cg1 - cg2) / count  db = (cb1 - cb2) / count  FOR i = 0 TO count    red = cr1 - i * dr    green = cg1 - i * dg    blue = cb1 - i * db    IF direction = 0      DRAWLINE x1 + i, y1, x1 + i, y2, RGB(red, green, blue)    ELSE      DRAWLINE x1, y1 + i, x2, y1 + i, RGB(red, green, blue)    ENDIF  NEXTENDFUNCTION // FARBVERLAUF// ------------------------------------------------------------- //// ---  SPLITCOLOR  ---// ------------------------------------------------------------- //FUNCTION SplitColor: color, BYREF red, BYREF green, BYREF blue  red = bAND(color, 255)  green = bAND(color / 256, 255)  blue = bAND(color / POW(256, 2), 255)ENDFUNCTION // SPLITCOLOR`

#### Schranz0r

Was haste den vor?

EDIT:

ohhh jetzt seh ich es ein Farbverlauf

werd ich mal antesten!

EDIT2:

Coole sache!
I DGArray's

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

#### Quentin

jau, naja vielleicht auch nicht wirklich sinnvoll, aber so sinnarme Spielereien machen mir zur Zeit Spaß

mit Verwendung von ALPHAMODE kann man so auch die Farbverläufe auf angezeigte Grafiken übertragen

Code (glbasic) Select
`// --------------------------------- //// Project: Farbverlauf// Start: Monday, December 31, 2007// IDE Version: 5.110FOR i = 0 TO 19  DRAWRECT i * 5, i * 5, 200 - i * 10, 200 - i * 10, RGB(RND(255), RND(255), RND(255))NEXTGRABSPRITE 0, 0, 0, 200, 200color1 = RGB(255, 0, 10)color2 = RGB(60, 255, 255)alpha = 0addi = 0.01alpha = 0WHILE TRUE  INC alpha, addi  IF alpha > 1 OR alpha < 0 THEN addi = -addi  DRAWSPRITE 0, 300, 0  Farbverlauf(100, 0, 500, 200, color1, color2, 0, alpha)  Farbverlauf(100, 220, 500, 450, color2, color1, 1, alpha)  SHOWSCREENWEND// ------------------------------------------------------------- //// ---  FARBVERLAUF  ---// x1, y1, x2, y2    --- Koordinaten des Rechteckes für den//                       Farbverlauf// co1, col2         --- Farben für den Farbverlauf (von .. bis)// direction         --- 0 = horizontaler Verlauf//                       <> 0 = vertikaler Verlauf// alpha             --- Alphamode für Einfärbeffekte// ------------------------------------------------------------- //FUNCTION Farbverlauf: x1, y1, x2, y2, col1, col2, direction, alpha  LOCAL width, i  LOCAL cr1, cg1, cb1  LOCAL cr2, cg2, cb2  LOCAL dr, dg, db  LOCAL red, green, blue  LOCAL count  SplitColor(col1, cr1, cg1, cb1)  SplitColor(col2, cr2, cg2, cb2)  IF direction = 0    count = x2 - x1 + 1  ELSE    count = y2 - y1 + 1  ENDIF  dr = (cr1 - cr2) / count  dg = (cg1 - cg2) / count  db = (cb1 - cb2) / count  FOR i = 0 TO count    red = cr1 - i * dr    green = cg1 - i * dg    blue = cb1 - i * db    IF direction = 0      ALPHAMODE alpha      DRAWLINE x1 + i, y1, x1 + i, y2, RGB(red, green, blue)    ELSE      ALPHAMODE alpha      DRAWLINE x1, y1 + i, x2, y1 + i, RGB(red, green, blue)    ENDIF  NEXTENDFUNCTION // FARBVERLAUF// ------------------------------------------------------------- //// ---  SPLITCOLOR  ---// ------------------------------------------------------------- //FUNCTION SplitColor: color, BYREF red, BYREF green, BYREF blue  red = bAND(color, 255)  green = bAND(color / 256, 255)  blue = bAND(color / POW(256, 2), 255)ENDFUNCTION // SPLITCOLOR`

#### Kitty Hello

Unter Win32 macht man Farbverläufe besser mit POLYVECTOR.

#### Schranz0r

ist die einfachste Lösung ja, aber nicht so schön verspielt ^^
I DGArray's

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

#### Quentin

stimmt, das mit POLYVECTOR ist mir nachher auch noch eingefallen, habs nur noch nicht hinbekommen

#### S.O.P.M.

Au ja, das ist traumhaft mit den Farbverläufen bei POLYVECTOR. Vor allem, weil sich wirklich jede Ecke anders einfärben lässt und dann alles perfekt ineinander fließt. Das muss intern ein toller Algorithmus sein!
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium