Seite 1 von 1
Farbverlauf von Farbe A zu Farbe B
Verfasst: 26.03.2008 00:23
von Delle
Hallo,
das liefert ja "nur" einen Farbverlauf zu schwarz:
Code: Alles auswählen
x.l=0
y.l=0
w.l=254
h.l=362
BackColor.l=RGB(255,0,0)
CreateImage(5000,w,h)
StartDrawing(ImageOutput(5000))
For i=1 To h
r.f= Red (BackColor)/100*(i/h*100)
g.f= Green(BackColor)/100*(i/h*100)
b.f= Blue (BackColor)/100*(i/h*100)
Line(0,i,w,1,RGB(r,g,b))
Next i
StopDrawing()
Wie kann man es erweitern, dass es in eine 2. frei wählbare Farbe verläuft?[/code]
Re: Farbverlauf von Farbe A zu Farbe B
Verfasst: 26.03.2008 00:35
von Kiffi
vielleicht ist
dieser Code in der PureArea was für Dich.
Grüße ... Kiffi
Verfasst: 26.03.2008 00:47
von Delle
Tanke, dessen Anpassung ging schneller als Selfcoding

Verfasst: 26.03.2008 11:38
von Kaeru Gaman
@Delle
zu deinem Ursprubngscode mal auf die schnelle: die Schleifenvariable und höhe sind Longs,
wahrscheinlich bekommst du deshalb nicht die richtigen Floats raus innerhalb der Berechnungen.
Verfasst: 26.03.2008 12:41
von #NULL
links steht aber jeweils ne zuweisung zu float, pb sollte also alles als float auswerten.
so scheint es mit zwei farbe zu gehen:
Code: Alles auswählen
c1 = $ff2288
c2 = $00ff99
x.l=0
y.l=0
w.l=254
h.l=362
CreateImage(5000,w,h)
StartDrawing(ImageOutput(5000))
For i=1 To h
r.f= Red(c1) + ( Red(c2)-Red(c1) ) /100*(i/h*100)
g.f= Green(c1) + (Green(c2)-Green(c1)) /100*(i/h*100)
b.f= Blue(c1) + ( Blue(c2)-Blue(c1)) /100*(i/h*100)
Line(0,i,w,1,RGB(r,g,b))
Next i
StopDrawing()
Verfasst: 26.03.2008 12:56
von NicTheQuick
Es geht auch ohne Floats:
Code: Alles auswählen
Define c1.l, c2.l, x.l, y.l, w.l, h.l
c1 = $123456
c2 = $789ABC
x = 0
y = 0
w = 254
h = 500
Define Img.l, max.l
Img = CreateImage(#PB_Any, w, h)
If Img
StartDrawing(ImageOutput(Img))
max = h - 1
For i = 0 To max
r = (Red(c1) * i / max) + Red(c2) * (max - i) / max
g = (Green(c1) * i / max) + Green(c2) * (max - i) / max
b = (Blue(c1) * i / max) + Blue(c2) * (max - i) / max
Line(0, i, w, 0, RGB(r, g, b))
Next
StopDrawing()
EndIf
SetClipboardImage(Img)
If OpenWindow(0, 0, 0, w, h, "Test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
If CreateGadgetList(WindowID(0))
ImageGadget(0, 0, 0, w, h, ImageID(Img))
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
EndIf
Man muss nur daran denken, dass man zuerst Multipliziert und
anschließend Dividiert.