Comme c'est un peu la mode des intro/demo, je me suis décider de faire un petit effet de cercle et cela donne :
Code : Tout sélectionner
EnableExplicit
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
#_OBJET3D_DEF_SINCOS = 359
Global Dim _Sin.f(#_OBJET3D_DEF_SINCOS)
Global Dim _Cos.f(#_OBJET3D_DEF_SINCOS)
Define.i i
For i=0 To #_OBJET3D_DEF_SINCOS
_Sin(i) = Sin((i / 180) * #PI)
_Cos(i) = Cos((i / 180) * #PI)
Next i
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
Procedure _CIRCLE_ANTIALISING(x.i, y.i, radius.d, antilenh.d, color.i)
;
;
;
Define.c cR, cG, cB
Define.d dNormal, dValue
If radius <= 0
radius = 0.00001
EndIf
If antilenh <= 0
antilenh = 0.00001
EndIf
ResetGradientColors()
DrawingMode(#PB_2DDrawing_AlphaBlend | #PB_2DDrawing_Gradient)
cR = Red (color)
cG = Green(color)
cB = Blue (color)
dNormal = 1 / radius
dValue = 1 - antilenh * dNormal
GradientColor( 0 , RGBA(cR, cG, cB, 255))
GradientColor(dValue, RGBA(cR, cG, cB, 255))
GradientColor( 1 , RGBA(cR, cG, cB, 0 ))
CircularGradient(x, y, radius)
Circle (x, y, radius)
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
Define.i j, event, px, py
;
Define.i hWnd = OpenWindow(0, 0, 0, 800, 600, "Intro", #PB_Window_SystemMenu)
If hWnd <> 0
CanvasGadget(1, 0, 0, 800, 600)
;
i = 0
px = 400
py = 200
;
Repeat
event = WindowEvent()
;
If StartDrawing(CanvasOutput(1))
DrawingMode(#PB_2DDrawing_AlphaBlend)
Box(0, 0, 800, 600, RGBA(0, 0, 0, 10))
;
i = (i + 1) % 359
j = (j + 2) % 359
;
_CIRCLE_ANTIALISING(px + _cos(i) * 120 + _sin(j) * 160, (py + 100) + _Cos(j) * 100 - _Sin(i) * 120, 60 + _Sin(i) * _sin(j) * 60, 120, RGBA(200, 0, 0, 40 ) )
_CIRCLE_ANTIALISING(px + _cos(i) * 180 - _cos(j) * 160, (py + 100) - _sin(j) * 120 + _Sin(i) * 120, 60 - _Sin(i) * _sin(j) * 60, 120, RGBA(0, 200, 0, 40 ) )
_CIRCLE_ANTIALISING(px - _cos(i) * 120 + _sin(j) * 160, (py + 100) + _Cos(j) * 140 + _Sin(i) * 120, 60 + _cos(i) * _sin(j) * 60, 120, RGBA(0, 0, 200, 40 ) )
_CIRCLE_ANTIALISING(px - _cos(i) * 120 - _sin(j) * 160, (py + 100) - _Cos(j) * 140 + _Sin(i) * 120, 60 - _cos(i) * _sin(j) * 60, 120, RGBA(200, 0, 200, 40))
_CIRCLE_ANTIALISING(px + _cos(i) * 180 + _sin(j) * 160, (py + 100) + _Cos(j) * 120 + _Sin(i) * 120, 60 + _cos(i) * _sin(j) * 60, 120, RGBA(200, 200, 0, 40))
_CIRCLE_ANTIALISING(px + _cos(i) * 120 - _sin(j) * 160, (py + 100) - _Cos(j) * 120 + _Sin(i) * 120, 60 - _cos(i) * _sin(j) * 60, 120, RGBA(0, 200, 200, 40))
;
StopDrawing()
EndIf
;
Until event = #PB_Event_CloseWindow
;
EndIf
GallyHC