Page 1 sur 1

Création d'un graphique XY

Publié : mar. 14/août/2012 12:55
par DanielSTP
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

Re: Création d'un graphique XY

Publié : mar. 14/août/2012 13:12
par Ar-S
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   


Re: Création d'un graphique XY

Publié : mar. 14/août/2012 14:56
par DanielSTP
Merci pour l'exemple fort joli mais je cherche à crée un graphe 2D de type XY relié pr une ligne simple !!!

Merci

Daniel

Re: Création d'un graphique XY

Publié : mar. 14/août/2012 15:22
par falsam
Point à point

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
Bienvenu sur ce forum.

Re: Création d'un graphique XY

Publié : mar. 14/août/2012 17:57
par Backup
...

Re: Création d'un graphique XY

Publié : mar. 14/août/2012 21:39
par graph100
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.

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
@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.

Re: Création d'un graphique XY

Publié : mer. 15/août/2012 9:05
par DanielSTP
@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 :D . 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 ?

Re: Création d'un graphique XY

Publié : mer. 15/août/2012 9:14
par falsam
DanielSTP a écrit :Dans l'exemple GetSystemMetrics_ n'est pas reconnu comme fonction chez moi ainsi que Beep_ vous savez pourquoi ?
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.

Re: Création d'un graphique XY

Publié : mer. 15/août/2012 9:18
par G-Rom

Re: Création d'un graphique XY

Publié : mer. 15/août/2012 9:44
par Backup

ha tiens ... j'etais passé a coté de ça .. Superbe :)

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

Re: Création d'un graphique XY

Publié : jeu. 16/août/2012 7:55
par DanielSTP
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

Re: Création d'un graphique XY

Publié : jeu. 16/août/2012 9:53
par Mesa