Mais à l' usage, Je me suis aperçu que l'on pourrait avoir aussi un mode rétro des charts
mais au retour on est obligé de réduire la boucle épaisseur car les charts augmente leur hauteur bizarre
Code : Tout sélectionner
Procedure Ellipse_rotation(Axex.l, Axey.l, Xrayon.d, Yrayon.d, Rot.d, Debut.l, Fin.l, Couleur.l)
; procedure ellipse by kernadec
Protected angle.d, R.d, X.d, Y.d, Posx1.l, Posy1.l, Posx2.l, Posy2.l
R = Radian(Rot)
For o = Debut To fin
Angle = Radian(o)
x = Cos(Angle) * Xrayon
y = - Sin(Angle) * Yrayon
Posx1 = Round(X * Cos(R) + Y * Sin(R), #PB_Round_Nearest) + Axex ;round pour un meilleur tracé
Posy1 = Round(X * Sin(R) - Y * Cos(R), #PB_Round_Nearest) + Axey ;round For a better traced
If Posx2 = 0 And Posy2 = 0 : Posx2 = Posx1 : Posy2 = Posy1 : EndIf
LineXY(Posx2, Posy2, Posx1, Posy1, Couleur)
Posx2 = Posx1
Posy2 = Posy1
Next o
EndProcedure
Procedure chart(Axex.l, Axey.l, Xrayon.d, Yrayon.d, Rot.d, Debut.l, Fin.l, Couleur1.l,Couleur2.l)
; Procedure chart by kernadec
If Debut > fin : Swap Debut , Fin : EndIf
Ellipse_rotation(Axex, Axey, Xrayon, Yrayon, Rot.d, Debut, Fin, Couleur1)
x.l = Axex + Xrayon * Cos(Radian(Debut))
y.l = Axey + Yrayon * Sin(Radian(Debut))
LineXY(Axex, Axey, x , y, Couleur1)
x = Axex + Xrayon * Cos(Radian(Fin))
y = Axey + Yrayon * Sin(Radian(Fin))
LineXY(Axex, Axey, x , y, Couleur1)
; Calculating the size of the sector for Fillarea()
Secteur.l = Abs(Fin - debut) ; Calcul la taille du secteur pour Fillarea()
If couleur1 <> couleur2 And Secteur > 1
x = Axex + ((Xrayon + 0.001) - 2 ) * Cos(Radian(debut + (Fin - debut) / 2 )) ;point medium
y = Axey + ((Yrayon + 0.001) - 2 ) * Sin(Radian(debut + (Fin - debut) / 2 ))
FillArea(x, y, Couleur1, Couleur2)
EndIf
EndProcedure
Procedure efface_chart(Axex.l, Axey.l, Xrayon.d, Yrayon.d, fin.l, Debut.l, Taille.l, Couleur1.l, Couleur2.l)
; Clears the full chart object.../ set starting loop thickness To 0 To clear all pixels
For i = 0 To Taille + 1 ; efface l'objet chart entier départ de la boucle = 0
Chart(Axex, i + Axey, Xrayon, Yrayon, 0, fin, Debut, Couleur1, Couleur2)
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0, fin, Debut, Couleur1, Couleur2)
EndProcedure
If OpenWindow(0, 0, 0, 500,500, "Exemple Pie Chart 3D animé", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 10, 10, 480, 480)
;**********************************************************************************************************
Taille.l = 13
Axex.l = 205
Axey.l = 225
Xrayon.d = 190
Yrayon.d = 75
Debut.l = 160
Fin.l = 240
For u = 1 To Abs(fin - debut) ; Blue
StartDrawing(CanvasOutput(0))
For i = 1 To Taille
Chart(Axex, i + Axey, Xrayon, Yrayon, 0 , Debut , Debut + u , RGB(0, 100, 171),RGB(100, 0, 170))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 , Debut , Debut + u , RGB(0, 0, 226),RGB(0, 0, 225))
StopDrawing()
Delay(5)
Next u
;**********************************************************************************************************
Taille = 16
Axex = 235
Axey = 220
Xrayon = 200
Yrayon = 75
Debut = 240
Fin = 315
For u = 1 To Abs(fin - debut) ; Green
StartDrawing(CanvasOutput(0))
For i = 1 To Taille
Chart(Axex, i + Axey, Xrayon, Yrayon, 0 , Debut, Debut + u , RGB(2, 182, 2),RGB(0, 180, 0))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 , Debut, Debut + u , RGB(0, 226, 0),RGB(0, 225, 0))
StopDrawing()
Delay(5)
Next u
;**********************************************************************************************************
Taille = 18
Axex = 250
Axey = 245
Xrayon = 220
Yrayon = 75
Debut = - 48
Fin = 160
For u = 1 To Abs(fin - debut) ; Yellow
StartDrawing(CanvasOutput(0))
For i = 1 To Taille
Chart(Axex, i + Axey, Xrayon, Yrayon, 0 , Debut, Debut + u, RGB(225, 181, 0),RGB(225, 180, 0))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 , Debut, Debut + u, RGB(225, 226, 0),RGB(225, 225, 0))
StopDrawing()
Next u
;*********************************** CHART EN MODE RETRO ***********************************************
; Taille = 18
; Axex = 250
; Axey = 245
; Xrayon = 220
; Yrayon = 75
; Debut = - 48
; Fin = 160
For u = Abs(fin - debut) To 1 Step - 1 ; Yellow
StartDrawing(CanvasOutput(0))
efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255),RGB(255, 255, 255))
; redraws the object modified chart mode-return
For i = 1 To Taille ; redessine l'objet chart modifié mode-retro
Chart(Axex, i + Axey, Xrayon, Yrayon, 0 , Debut, fin - (Abs(Debut - fin) - u), RGB(225, 181, 0),RGB(225, 180, 0))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 , Debut, fin - (Abs(Debut - fin) - u), RGB(225, 226, 0),RGB(225, 225, 0))
StopDrawing()
Next u
StartDrawing(CanvasOutput(0))
efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255),RGB(255, 255, 255))
StopDrawing()
;**********************************************************************************************************
Taille = 16
Axex = 235
Axey = 220
Xrayon = 200
Yrayon = 75
Debut = 240
Fin = 315
For u = Abs(fin - debut) To 1 Step - 1 ; Green
StartDrawing(CanvasOutput(0))
efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255),RGB(255, 255, 255))
; redraws the object modified chart mode-return
For i = 1 To Taille ; redessine l'objet chart modifié mode-retro
Chart(Axex, i + Axey, Xrayon, Yrayon, 0 , Debut, fin - (Abs(Debut - fin) - u), RGB(2, 182, 2),RGB(0, 180, 0))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 , Debut, fin - (Abs(Debut - fin) - u), RGB(0, 226, 0),RGB(0, 225, 0))
StopDrawing()
Delay(5)
Next u
StartDrawing(CanvasOutput(0))
efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255),RGB(255, 255, 255))
StopDrawing()
;**********************************************************************************************************
Taille = 14
Axex = 205
Axey = 225
Xrayon = 190
Yrayon = 75
Debut = 160
Fin = 240
For u = Abs(fin - debut) To 1 Step - 1 ; Blue
StartDrawing(CanvasOutput(0))
efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255),RGB(255, 255, 255))
; redraws the object modified chart mode-return
For i = 1 To Taille ; redessine l'objet chart modifié mode-retro
Chart(Axex, i + Axey, Xrayon, Yrayon, 0 , Debut, fin - (Abs(Debut - fin) - u), RGB(0, 100, 171),RGB(100, 0, 170))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 ,Debut, fin - (Abs(Debut - fin) - u), RGB(0, 0, 226),RGB(0, 0, 225))
StopDrawing()
Delay(5)
Next u
StartDrawing(CanvasOutput(0))
efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255),RGB(255, 255, 255))
StopDrawing()
;**********************************************************************************************************
StartDrawing(CanvasOutput(0))
DrawText(70, 70, "ROTATIONS CONTRAIRES AUX PRECEDENTES", RGB(0, 0, 0),RGB(255, 255, 225))
StopDrawing()
Delay(1000)
;*********************************** ROTATIONS CONTRAIRE AUX PRECEDENTES ***********************************
;*********************************** ROTATIONS CONTRARY TO THE PREVIOUS ***********************************
Taille = 18
Axex = 250
Axey = 245
Xrayon = 220
Yrayon = 75
Debut = - 48
Fin = 160
For u = 1 To Abs(fin - debut) ; Yellow
StartDrawing(CanvasOutput(0))
For i = 1 To Taille
Chart(Axex, i + Axey, Xrayon, Yrayon, 0 , Fin, Fin - u, RGB(225, 181, 0), RGB(225, 180, 0))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 , Fin, Fin - u, RGB(225, 226, 0), RGB(225, 225, 0))
StopDrawing()
Next u
;**********************************************************************************************************
Taille = 16
Axex = 235
Axey = 220
Xrayon = 200
Yrayon = 75
Debut = 240
Fin = 315
For u = 1 To Abs(fin - debut) ; Green
StartDrawing(CanvasOutput(0))
For i = 1 To 16
Chart(Axex, i + Axey, Xrayon, Yrayon, 0 , Fin, Fin - u, RGB(2, 182, 2), RGB(0, 180, 0))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 , Fin, Fin - u, RGB(0, 226, 0), RGB(0, 225, 0))
StopDrawing()
Delay(5)
Next u
;**********************************************************************************************************
Taille = 14
Axex = 205
Axey = 225
Xrayon = 190
Yrayon = 75
Debut = 160
Fin = 240
For u = 1 To Abs(fin - debut) ; Blue
StartDrawing(CanvasOutput(0))
For i = 1 To 14
Chart(Axex, i + Axey, Xrayon, Yrayon, 0 , Fin, Fin - u, RGB(0, 100, 171), RGB(100, 0, 170))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 , Fin, Fin - u, RGB(0, 0, 226), RGB(0, 0,225))
StopDrawing()
Delay(5)
Next u
;*********************************** CHART ROTATION CONTRAIRE MODE RETRO *********************************
; Taille = 14
; Axex = 205
; Axey = 225
; Xrayon = 190
; Yrayon = 75
; Debut = 160
; Fin = 240
For u = Abs(fin - debut) To 1 Step - 1 ; Blue
StartDrawing(CanvasOutput(0))
efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255))
; redraws the object modified chart mode-return
For i = 1 To Taille ; redessine l'objet chart modifié mode-retro
Chart(Axex, i + Axey, Xrayon, Yrayon, 0 , debut + (Abs(Debut - fin ) - u), Fin, RGB(0, 100, 171), RGB(100, 0, 170))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 , debut + (Abs(Debut - fin ) - u), Fin, RGB(0, 0, 226), RGB(0, 0, 225))
StopDrawing()
Delay(5)
Next u
StartDrawing(CanvasOutput(0))
efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255),RGB(255, 255, 255))
StopDrawing()
;**********************************************************************************************************
Taille = 16
Axex = 235
Axey = 220
Xrayon = 200
Yrayon = 75
Debut = 240
Fin = 315
For u = Abs(fin - debut) To 1 Step - 1 ; Green
StartDrawing(CanvasOutput(0))
efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255))
; redraws the object modified chart mode-return
For i = 1 To Taille ; redessine l'objet chart modifié mode-retro
Chart(Axex, i + Axey, Xrayon, Yrayon, 0, debut + (Abs(Debut - fin ) - u), Fin, RGB(2, 182, 2), RGB(0, 180, 0))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 , debut + (Abs(Debut - fin ) - u), Fin, RGB(0, 226, 0), RGB(0, 225, 0))
StopDrawing()
Delay(5)
Next u
StartDrawing(CanvasOutput(0))
efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255),RGB(255, 255, 255))
StopDrawing()
;**********************************************************************************************************
Taille = 18
Axex = 250
Axey = 245
Xrayon = 220
Yrayon = 75
Debut = - 48
Fin = 160
For u = Abs(fin - debut) To 1 Step - 1 ; Yellow
StartDrawing(CanvasOutput(0))
efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255), RGB(255, 255, 255))
; redraws the object modified chart mode-return
For i = 1 To Taille ; redessine l'objet chart modifié mode-retro
Chart(Axex, i + Axey, Xrayon, Yrayon, 0, debut + (Abs(Debut - fin ) - u), Fin, RGB(225, 181, 0), RGB(225, 180, 0))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 , debut + (Abs(Debut - fin ) - u), Fin, RGB(225, 226, 0), RGB(225, 225, 0))
StopDrawing()
Next u
StartDrawing(CanvasOutput(0))
efface_chart(Axex, Axey, Xrayon, Yrayon, fin, Debut, Taille, RGB(254, 255, 255),RGB(255, 255, 255))
StopDrawing()
;**********************************************************************************************************
Delay(300)
StartDrawing(CanvasOutput(0))
Box(10, 10, 480, 480, RGB(255, 255, 255))
DrawText(190, 220, " TERMINE ", RGB(0, 0, 0),RGB(255, 255, 225))
StopDrawing()
Delay(1000)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf