J'avais besoin d'un arc-en-ciel pour un petit utilitaire que je posterai bientôt (ça sera la surprise


Alors j'ai fait au pif car je ne connais pas le lien entre le système RGB et les longueurs d'ondes. De toute façon, c'est juste esthétique. Il y a deux méthodes. La première donne de meilleurs résultats mais j'ai laissé la deuxième pour ceux qui aiment jouer avec les sinus !
Code : Tout sélectionner
;arc-en-ciel
;auteur Huitbit
;PureBasic 4.30 (Windows - x86)
#Largeur=1024
#Hauteur=200
decalage.l=Round(#Largeur/5,#PB_Round_Nearest)
If OpenWindow(0, 0, 0, #Largeur, #Hauteur, "Arc-en-ciel", #PB_Window_SystemMenu )
If StartDrawing(WindowOutput(0))
;PREMIERE METHODE
For x=0 To decalage
Line(x,0,0,#Hauteur*0.5,RGB(255,x*255/decalage,0))
Line(x+decalage,0,0,#Hauteur*0.5,RGB(255-x*255/decalage,255,0))
Line(x+2*decalage,0,0,#Hauteur*0.5,RGB(0,255,x*255/decalage))
Line(x+3*decalage,0,0,#Hauteur*0.5,RGB(0,255-x*255/decalage,255))
Line(x+4*decalage,0,0,#Hauteur*0.5,RGB(x*255/decalage,0,255))
Next x
;DEUXIEME METHODE
periode.l=6*decalage
For t=0 To #Largeur
Line(t,#Hauteur*0.5,0,#Hauteur*0.5,RGB(Int(128+127*Cos(2*#PI*t/periode)),Int(128+127*Cos(2*#PI*(t-2*decalage)/periode)),Int(128+127*Cos(2*#PI*(t-4*decalage)/periode))))
Next t
StopDrawing()
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Hasta la vista !