ok this is something like that you probly wan't
hope you like :)
Graphics 800,600,32,3 Restore colo Read r1,g1,b1,blah Read r2,g2,b2,nb st=0 Repeat st=st+1 col$=gradient(r1,g1,b1,r2,g2,b2,nb,st) Color Mid(col$,1,3),Mid(col$,4,3),Mid(col$,7,3) Rect 0,0,800,600 Flip If st=nb r1=r2 g1=g2 b1=b2 st=0 Read r2,g2,b2,nb If r2=999 And g2=999 And b2=999 Restore colo Read r2,g2,b2,nb EndIf EndIf Until KeyDown(1) WaitKey End ;---------------data-------------- ;r,g,b,steps ;--------------------------------- .Colo Data 255,0,0,100 Data 255,100,0,100 Data 255,200,0,100 Data 255,255,0,100 Data 200,255,0,100 Data 100,255,0,100 Data 0,255,0,100 Data 0,255,100,100 Data 0,200,200,100 Data 0,100,255,100 Data 0,0,255,100 Data 100,0,255,100 Data 200,0,200,100 Data 255,0,100,100 Data 999,999,999,999 ; end of data ;-------------function gradient----------- ; return a string in format rrr,ggg,bbb ;----------------------------------------- ; ;rs#,gs#,bs# :rgb source ;re#,ge#,be# :rgb destination ;stpg steps for the total transition ;cs current step ; ; Function gradient$(rs#,gs#,bs#,re#,ge#,be#,stpg,cs) If rs#>re# vadr#=((rs#-re#)/stpg)*-1.0 Else vadr#=((re#-rs#)/stpg)*1.0 EndIf If rs#>re# vadg#=((gs#-ge#)/stpg)*-1.0 Else vadg#=((ge#-gs#)/stpg)*1.0 EndIf If bs#>be# vadb#=((bs#-be#)/stpg)*-1.0 Else vadb#=((be#-bs#)/stpg)*1.0 EndIf rs#=rs#+vadr#*cs gs#=gs#+vadg#*cs bs#=bs#+vadb#*cs Return Mid$("000",1,3-Len(Str$(Int(rs#))))+Str$(Int(rs#))+Mid$("000",1,3-Len(Str$(Int(gs#))))+Str$(Int(gs#))+Mid$("000",1,3-Len(Str$(Int(bs#))))+Str$(Int(bs#)) End Function
hope you like :)