Création d'un graphique XY

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
DanielSTP
Messages : 4
Inscription : dim. 12/août/2012 19:57
Localisation : Haute-Savoie France
Contact :

Création d'un graphique XY

Message 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
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Création d'un graphique XY

Message 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   

~~~~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
DanielSTP
Messages : 4
Inscription : dim. 12/août/2012 19:57
Localisation : Haute-Savoie France
Contact :

Re: Création d'un graphique XY

Message 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
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Création d'un graphique XY

Message 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.
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%
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Création d'un graphique XY

Message par Backup »

...
Dernière modification par Backup le mar. 19/août/2014 10:12, modifié 3 fois.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Création d'un graphique XY

Message 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.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
DanielSTP
Messages : 4
Inscription : dim. 12/août/2012 19:57
Localisation : Haute-Savoie France
Contact :

Re: Création d'un graphique XY

Message 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 ?
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Création d'un graphique XY

Message 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.
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%
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Création d'un graphique XY

Message par G-Rom »

Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Création d'un graphique XY

Message 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 :)
DanielSTP
Messages : 4
Inscription : dim. 12/août/2012 19:57
Localisation : Haute-Savoie France
Contact :

Re: Création d'un graphique XY

Message 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
Répondre