Code : Tout sélectionner
Procedure Ellipse_rotation(Axex.l, Axey.l, Xrayon.l, Yrayon.l, Rot.d, Debut.l, Fin.l, Couleur.l)
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
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.l, Yrayon.l, Rot.d, Debut.l, Fin.l, Couleur1.l,Couleur2.l)
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)
If couleur1 <> couleur2
x = Axex + (Xrayon - 2 ) * Cos(Radian(debut + (Fin - debut) / 2 ))
y = Axey + (Yrayon - 2 ) * Sin(Radian(debut + (Fin - debut) / 2 ))
FillArea(x, y, Couleur1, Couleur2)
EndIf
EndProcedure
Procedure chartman(Axex, Axey, Xrayon, Yrayon, Debut, Fin)
For u = 1 To 4
Couleur1.l = RGB(Random(255) ,Random(255), Random(255))
For i = 1 To 80
StartDrawing(CanvasOutput(0))
Chart(Axex, Axey, Xrayon, Yrayon, 0 , 160, 240, RGB(254, 255, 255),RGB(255, 255, 255))
Chart(Axex, Axey, Xrayon, Yrayon, 0 , Debut - i, Fin, RGB(253, 255, 255), Couleur1)
StopDrawing()
Next i
For i = 80 To 1 Step -1
StartDrawing(CanvasOutput(0))
Chart(Axex, Axey, Xrayon, Yrayon, 0 , 160, 240, RGB(254, 255, 255),RGB(255, 255, 255))
Chart(Axex, Axey, Xrayon, Yrayon, 0 , Debut - i, Fin, RGB(253, 255, 255), Couleur1)
If i = 1
Chart(Axex, Axey, Xrayon, Yrayon, 0 , 160, 240, RGB(254, 255, 255),RGB(255, 255, 255))
EndIf
StopDrawing()
Next i
Next u
EndProcedure
If OpenWindow(0, 0, 0, 500,500, "Exemple Graphique Chart 3D", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 10, 10, 480, 480)
StartDrawing(CanvasOutput(0))
Axex.l = 240
Axey.l = 220
Xrayon.l = 196
Yrayon.l = 70
Debut.l = 240
Fin.l = 315
For i = 1 To 16
Chart(Axex, i+Axey, Xrayon, Yrayon, 0 , Debut, Fin, RGB(2, 182, 2),RGB(0, 180, 0))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 , Debut, Fin, RGB(0, 226, 0),RGB(0, 225, 0))
Axex = 250
Axey = 245
Xrayon = 220
Yrayon = 72
Debut = - 48
Fin = 158
For i = 1 To 20
Chart(Axex, i+Axey, Xrayon, Yrayon, 0 , Debut, Fin, RGB(225, 181, 0),RGB(225, 180, 0))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 , Debut, Fin, RGB(225, 226, 0),RGB(225, 225, 0))
Axex = 210
Axey = 225
Xrayon = 190
Yrayon = 70
Debut = 162
Fin = 240
For i = 1 To 16
Chart(Axex, i+Axey, Xrayon, Yrayon, 0 , Debut, Fin, RGB(0, 100, 171),RGB(100, 0, 170))
Next i
Chart(Axex, Axey, Xrayon, Yrayon, 0 , Debut, Fin, RGB(0, 0, 226),RGB(0, 0,225))
StopDrawing()
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf