Création d'un graphique XY
-
- Messages : 4
- Inscription : dim. 12/août/2012 19:57
- Localisation : Haute-Savoie France
- Contact :
Création d'un graphique XY
Bonjour
Apres plusieurs recherche google et forum je n'ai pas trouver un code, ou autre, existant pour afficher un graphe XY.
Pourriez vous m'aiguiller ?
Merci d'avance
Daniel
Apres plusieurs recherche google et forum je n'ai pas trouver un code, ou autre, existant pour afficher un graphe XY.
Pourriez vous m'aiguiller ?
Merci d'avance
Daniel
Re: Création d'un graphique XY
petit exemple de graph
Code : Tout sélectionner
If OpenWindow(0, 100, 200, 300, 200, "2D Drawing Test")
; ce qui nous intéresse -------------
If CreateImage(0, 300, 200)
If StartDrawing(ImageOutput(0))
Color = 255
For i = 0 To 200 Step 20
Box(i,180-i,20,i, RGB(0,Color,0))
Color - 20
Next
StopDrawing()
EndIf
EndIf
; -----------------------------------
ImageGadget(0, 0, 0, 0, 0, ImageID(0))
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow
EndIf
End
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
-
- Messages : 4
- Inscription : dim. 12/août/2012 19:57
- Localisation : Haute-Savoie France
- Contact :
Re: Création d'un graphique XY
Merci pour l'exemple fort joli mais je cherche à crée un graphe 2D de type XY relié pr une ligne simple !!!
Merci
Daniel
Merci
Daniel
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Création d'un graphique XY
Point à point
Bienvenu sur ce forum.
Code : Tout sélectionner
Enumeration
#Mainform
#Grid
EndEnumeration
Define.l Event
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget
Procedure Open_MainForm()
OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", WindowStyle)
CanvasGadget(#Grid, 0, 0, 500, 400)
StartDrawing(CanvasOutput(#Grid))
;L'axe dex X (Horizontal)
DrawingMode(#PB_2DDrawing_Default)
LineXY(30, 350, 450, 350, RGB(255, 69, 0))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(450, 360, "(x)", RGB(255, 69, 0))
;L'axe des Y (Vertical)
DrawingMode(#PB_2DDrawing_Default)
LineXY(30, 350, 30, 20, RGB(255, 69, 0))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(5, 10, "(y)", RGB(255, 69, 0))
;Quelques points
Circle(30,30, 2, RGB(0, 0, 0)) ;Point A
Circle(150,80, 2, RGB(0, 0, 0)) ;Point B
LineXY(30,30, 150,80, RGB(0, 0, 0)) ;[AB]
Circle(300,300, 2, RGB(0, 0, 0)) ;Point C
LineXY(150,80, 300,300, RGB(0, 0, 0)) ;[BC]
Circle(450,280, 2, RGB(0, 0, 0)) ;Point D
LineXY(300,300, 450,280, RGB(0, 0, 0)) ;[CD]
StopDrawing()
EndProcedure
Open_MainForm()
Repeat
Event = WaitWindowEvent(10)
Select Event
Case #PB_Event_Gadget
Select GEvent
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Création d'un graphique XY
...
Dernière modification par Backup le mar. 19/août/2014 10:12, modifié 3 fois.
Re: Création d'un graphique XY
j'ai légèrement modifié ton code, Dobro,
Une petite mésentente sur la place des startDrawing() et Stopdrawing(). A ne jamais placer comme tu l'as fait, si on veux une exécution fluide (à mon humble avis)
Néanmoins, très bon exemple sur le maniement d'une courbe.
@DanielSTP : Si ton objectif est de taper une fonction dans un StringGadget(), puis de la tracer, il va falloir faire plus que du traçage.
Comme tu as pu le remarquer dans les codes ci-dessus, il faut écrire la fonction dans le code même du programme.
Pour pouvoir taper une fonction en temps d'utilisateur du programme, puis la faire tracer, il faut mettre en place un interpréteur de fonction (un truc du genre).
Qui arrive à dire que "x + 2" = 5 quand x vaut 3 etc...
Il y a plein de posts qui en parlent sur les forums.
Une petite mésentente sur la place des startDrawing() et Stopdrawing(). A ne jamais placer comme tu l'as fait, si on veux une exécution fluide (à mon humble avis)
Néanmoins, très bon exemple sur le maniement d'une courbe.
Code : Tout sélectionner
#dobro =1
#Police =1
#Sprite =1
InitKeyboard () : ; j'espere qu'il y a un clavier au moins !!
; ***********************************
Resultat = InitSprite ()
fontid = LoadFont ( #Police , "arial" , 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_ ( #SM_CXSCREEN ): ;=largeur de l'ecran
EcranY = GetSystemMetrics_ ( #SM_CYSCREEN ): ;=hauteur de l'ecran
windowid = OpenWindow (1, 0, 0,800, 600, "hello" , #PB_Window_SystemMenu|#PB_Window_BorderLess | #PB_Window_ScreenCentered )
windowid = WindowID (1)
Result = OpenWindowedScreen ( windowid ,0,0, 800,600, 1, 0,0)
Y=300 ;Position en y du dessin
X=50 ;Position en x du dessin
amplitude.f=100 ;amplitude du dessin
pas.f=0.01
Repeat
Event= WindowEvent ()
ExamineKeyboard ()
If event = 517
; le clic bouto droit fera quitter !
End
EndIf
StartDrawing ( ScreenOutput ())
For Angle=0 To 700
If amplitude>100
amplitude=99
pas=-pas
Beep_ (200,50)
EndIf
If amplitude<-100
amplitude=-99
pas=-pas
Beep_ (50,50)
EndIf
amplitude=amplitude+pas
Plot (angle+x, Y + amplitude* Sin (angle* #PI/180 ), RGB (255,255,255)) ; une Sinuzoidale
; Plot (x + amplitude * Cos(angle*#PI/180) , Y + amplitude* Sin(angle*#PI/180),RGB(255,255,255)) ; un cercle
; FlipBuffers():; affiche l'ecran
Next angle
StopDrawing ()
FlipBuffers (): ; affiche l'ecran
ClearScreen ( RGB (0, 0, 0)) : ;efface l'ecran
Until Event = #PB_Event_CloseWindow Or KeyboardPushed ( #PB_Key_Escape ) ; press touche droit
Comme tu as pu le remarquer dans les codes ci-dessus, il faut écrire la fonction dans le code même du programme.
Pour pouvoir taper une fonction en temps d'utilisateur du programme, puis la faire tracer, il faut mettre en place un interpréteur de fonction (un truc du genre).
Qui arrive à dire que "x + 2" = 5 quand x vaut 3 etc...
Il y a plein de posts qui en parlent sur les forums.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel
)
Mon site : CeriseCode (Attention Chantier perpétuel

-
- Messages : 4
- Inscription : dim. 12/août/2012 19:57
- Localisation : Haute-Savoie France
- Contact :
Re: Création d'un graphique XY
@graph100
Merci pour vos exemple.
Mon but est de faire un prog de test de connexion internet avec chargement en http et versement en ftp. Et je souhaite afficher le temps de chargement et versement dans un graphique.
Aujourd'hui je suis habituer à des langages de programmation plus haut niveau genre LabView avec interface graphique mais j'utilise aussi du HTBasic et VB6 et c'est pour cela que j'ai choisi PureBasic qui est proche de language connu
. J'avais crée un 'Gadget' en HTBasic qui me permettait d'afficher une fenêtre et de plotter des courbes a l'intérieur et je me disait que quelqu'un avais peut être déjà fait la même chose en PureBasic.
Dans l'exemple GetSystemMetrics_ n'est pas reconnu comme fonction chez moi ainsi que Beep_ vous savez pourquoi ?
Merci pour vos exemple.
Mon but est de faire un prog de test de connexion internet avec chargement en http et versement en ftp. Et je souhaite afficher le temps de chargement et versement dans un graphique.
Aujourd'hui je suis habituer à des langages de programmation plus haut niveau genre LabView avec interface graphique mais j'utilise aussi du HTBasic et VB6 et c'est pour cela que j'ai choisi PureBasic qui est proche de language connu

Dans l'exemple GetSystemMetrics_ n'est pas reconnu comme fonction chez moi ainsi que Beep_ vous savez pourquoi ?
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Création d'un graphique XY
Ces deux fonctions sont des api windows. Peut être que utilises tu la version de démonstration de Pure Basic et dans ce cas les API ne fonctionnent pas, ou alors tu n'es pas sous windows.DanielSTP a écrit :Dans l'exemple GetSystemMetrics_ n'est pas reconnu comme fonction chez moi ainsi que Beep_ vous savez pourquoi ?
Dernière modification par falsam le mer. 15/août/2012 9:29, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Création d'un graphique XY
ha tiens ... j'etais passé a coté de ça .. Superbe

j'ai retiré les Api de mon code , tu peux retesterDanielSTP a écrit :Dans l'exemple GetSystemMetrics_ n'est pas reconnu comme fonction chez moi ainsi que Beep_ vous savez pourquoi ?

-
- Messages : 4
- Inscription : dim. 12/août/2012 19:57
- Localisation : Haute-Savoie France
- Contact :
Re: Création d'un graphique XY
Merci c'est ça que je cherchai !!!
Effectivement je suis sous Mac et j'avais commenter les lignes
Je vous livrerais le code final
Daniel
Effectivement je suis sous Mac et j'avais commenter les lignes
Je vous livrerais le code final
Daniel
Re: Création d'un graphique XY
Il existe une library RMChart mais c'est plus compliqué à faire fonctionner.
http://www.purebasicpower.de/?RMChart
http://www.purebasic.fr/english/viewtopic.php?t=31091
http://forums.purebasic.com/english/vie ... 13&t=46525
Et on peut utiliser une dll :
http://www.purearea.net/pb/english/dll_devtools.htm
http://www.purearea.net/pb/download/use ... rt_dll.zip

Mesa.
http://www.purebasicpower.de/?RMChart
http://www.purebasic.fr/english/viewtopic.php?t=31091
http://forums.purebasic.com/english/vie ... 13&t=46525
Et on peut utiliser une dll :
http://www.purearea.net/pb/english/dll_devtools.htm
http://www.purearea.net/pb/download/use ... rt_dll.zip
Mesa.