Flype - UserLibraries pour PureBasic 4.0

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Anonyme

Message par Anonyme »

Tu fait du super boulot Flype ! j'ai cepandant une question, peut t'on placer GDI+ au meme titre que SDL ou Ddraw ? car il aurait été intéressant pour moi de porté mon BumpMapping avec GDI+ voir se que cela donne, mais je n'ai pas trouvé de commande pour placé un simple pixel :oops:
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Progi1984 a écrit :Trés bon boulot, ca sera surement utile un jour mais pas pour l'instant !

Sinon le tutorial 6 ne fonctionne pas

est ce que cela a été dur de traduire du PowerBasic ?
ca remarche si on remplace le code par celui-ci :

Code : Tout sélectionner

;-
;- RMCHART.DLL - TUTORIAL 06
;- 

XIncludeFile "../rmchart.pbi"

;-

#ID_WINDOW = 1 
#ID_CHART  = 1 
#ID_REGION = 1 

;-

If RMC_INIT()
  
  If OpenWindow(#ID_WINDOW, 0, 0, 640, 480, "RMCHART.DLL", #PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
    
    If RMC_CreateChart(WindowID(#ID_WINDOW), #ID_CHART, 0, 0, 640, 480) = #RMC_NO_ERROR
      
      RMC_AddRegion(#ID_CHART, 5, 5, -5, -5)
      RMC_AddGrid(#ID_CHART, #ID_REGION)
      RMC_AddXAxis(#ID_CHART, #ID_REGION, #RMC_XAXISBOTTOM)
      RMC_AddYAxis(#ID_CHART, #ID_REGION, #RMC_YAXISLEFT)
      
      RMC_AddXYSeries(#ID_CHART, #ID_REGION, ?Series1X, 10, ?Series1Y, 10, #Black, #RMC_XY_LINE, #RMC_LSTYLE_SPLINE)
      RMC_AddXYSeries(#ID_CHART, #ID_REGION, ?Series2X, 10, ?Series2Y, 10, #Red, #RMC_XY_LINE_DASH, #RMC_LSTYLE_STAIR)
      RMC_AddXYSeries(#ID_CHART, #ID_REGION, ?Series3X, 10, ?Series3Y, 10, #Green, #RMC_XY_CABLE, #RMC_LSTYLE_LINE)
      
      RMC_Draw(#ID_CHART)
      
      Repeat
      Until WaitWindowEvent() = #PB_Event_CloseWindow
      
    EndIf
    
  EndIf
  
EndIf

;-

DataSection
Series1X: Data.d 10,20,20,30,40,50,60,70,80,90
Series1Y: Data.d 10,20,30,30,30,40,90,65,80,10
Series2X: Data.d 23,33,45,62,69,74,85,90,92,99
Series2Y: Data.d 08,15,25,48,68,55,53,42,50,60
Series3X: Data.d 18,23,45,62,69,74,85,90,92,99
Series3Y: Data.d 50,55,60,55,60,55,75,45,55,60
EndDataSection

;-

ce qui donne çà :
Image


NB:
voyez, on peut utiliser les Data de purebasic, des tableaux, des blocs mémoires pour stocker les coordonnées...
Image
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message par Good07 »

Bonsoir à tous.

Bon voilà ma petite contribution avec un exemple de graphique un peu plus abouti. Je trouve cette lib très bien et d'un emploi assez facile quand on à compris comment ça marche.
Une petite astuce, utilisez le programme rmcdesigner pour creer vos graphiques et sauvegardez le source au format Visual Basic. Après c'est facile de récupérer les paramètres (quelques copier coller) et de les adapter à Pure basic.
Par contre, je n'ai pas réussi à creer la légende du graph. Le programme plante quand j'essaye d'en créer une. :(
Peut-être que Flype à un exemple ?
Bon voici un exemple en PB:

Code : Tout sélectionner

XIncludeFile "RMChart.pbi"

If Not RMC_INIT()
  MessageRequester("Error", "Can't initialized RMCHART.DLL", #MB_ICONERROR)
  End
EndIf

#ChartID     = 1
#RegionID    = 1




flags = #PB_Window_SystemMenu
flags | #PB_Window_SizeGadget
flags | #PB_Window_ScreenCentered
flags | #PB_Window_MinimizeGadget
flags | #PB_Window_MaximizeGadget
#LabelAxe="1*2*3*4*5*6*7*8*9*10*11*12*13*14*15*16*17*18*19*20*21*22*23*24*25*26*27*28*29*30*31"

tLineSeries.tRMC_LINESERIES
tLineSeries\nType.l           =#RMC_LINE
tLineSeries\nStyle.l          =#RMC_LINE_CABLE_SHADOW
tLineSeries\nLineStyle.l      =#RMC_LSTYLE_LINE_AREA
tLineSeries\nIsLucent.l       =#False
tLineSeries\nColor.l          =#ColorSpringGreen
tLineSeries\nSeriesSymbol.l   =#RMC_SYMBOL_BULLET
tLineSeries\nWhichDataAxis.l  =1
tLineSeries\nValueLabelOn.l   =#RMC_VLABEL_NONE
tLineSeries\nHatchMode.l      =#RMC_HATCHBRUSH_OFF

tLineSeries2.tRMC_LINESERIES
tLineSeries2\nType.l           =#RMC_LINE
tLineSeries2\nStyle.l          =#RMC_LINE_CABLE_SHADOW
tLineSeries2\nLineStyle.l      =#RMC_LSTYLE_LINE
tLineSeries2\nIsLucent.l       =#False
tLineSeries2\nColor.l          =#ColorRed 
tLineSeries2\nSeriesSymbol.l   =#RMC_SYMBOL_BULLET
tLineSeries2\nWhichDataAxis.l  =1
tLineSeries2\nValueLabelOn.l   =#RMC_VLABEL_NONE
tLineSeries2\nHatchMode.l      =#RMC_HATCHBRUSH_OFF

tLineSeries3.tRMC_LINESERIES
tLineSeries3\nType.l           =#RMC_LINE
tLineSeries3\nStyle.l          =#RMC_LINE_CABLE_SHADOW
tLineSeries3\nLineStyle.l      =#RMC_LSTYLE_LINE
tLineSeries3\nIsLucent.l       =#False
tLineSeries3\nColor.l          =#ColorBananaYellow
tLineSeries3\nSeriesSymbol.l   =#RMC_SYMBOL_BULLET
tLineSeries3\nWhichDataAxis.l  =2
tLineSeries3\nValueLabelOn.l   =#RMC_VLABEL_NONE
tLineSeries3\nHatchMode.l      =#RMC_HATCHBRUSH_OFF

Dim aData.d(30)
For n=0 To 30
  aData(n)=Random(10)+20
Next n


Dim aData2.d(30)
For n=0 To 30
  aData2(n)=Random(15)
Next n

Dim aData3.d(30)
For n=0 To 30
  aData3(n)=Random(15)+60
Next n

If OpenWindow(0, 0, 0, 800, 600,"Graphique températures", flags)

SetWindowColor(0, $FFDDDD)
RMC_CreateChart(WindowID(0), #ChartID, 10,10,600, 450,#ColorLavender , #RMC_CTRLSTYLEFLAT,#False,"", "Tahoma")
RMC_AddRegion(#RegionID, 5, 5, -5, -5,"") 
RMC_AddGrid (#ChartID, #RegionID, #ColorBeige, #True, 0, 0, 0, 0, #RMC_BICOLOR_NONE)
RMC_AddDataAxis(#ChartID, #RegionID,#RMC_DATAAXISLEFT,-15, 40, 11, 8,0,0, #RMC_LINESTYLESOLID, 0, "°", "Températures")
RMC_AddDataAxis(#ChartID, #RegionID,#RMC_DATAAXISRIGHT,0,100, 11, 8,0,0, #RMC_LINESTYLESOLID, 0, "%", "Humidité")
RMC_AddLabelAxis(#ChartID, #RegionID,#LabelAxe,1, 31,#RMC_LABELAXISBOTTOM, 8,0,#RMC_TEXTUPWARD,0,#RMC_LINESTYLESOLID,"Jours Mois")
RMC_AddLineSeriesI(#ChartID, #RegionID,@aData.d(0),31,@adata.d(0),1,tLineSeries)
RMC_AddLineSeriesI(#ChartID, #RegionID,@aData2.d(0),31,@adata2.d(0),1,tLineSeries2)
RMC_AddLineSeriesI(#ChartID, #RegionID,@aData3.d(0),31,@adata3.d(0),1,tLineSeries3)


RMC_Draw(#ChartID)

Repeat
  Event = WaitWindowEvent()  
Until Event = #PB_Event_CloseWindow
EndIf


End
Les courbes rouges et vertes sont sensé donner les températures du matin et de l'après midi et la courbe jaune le degrès d'humidité, mais sans légende, c'est moins évident.

Bon, je vais essayer de voir avec la doc même si je suis un peut fâché avec la langue anglaise... :D

A+

André.
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message par Good07 »

Bonjour à tous.

Ben, j'ai résolu le problème de la légende pour les graphiques qui utilisent plusieurs courbes pour le même graph. En fait c'était simple, mais je ne comprend pas pourquoi rmcdesigner a planté deux lors de mes essais. Depuis, plus de plantages. 8O
En fait, je me suis servi d'un exemple dans le dossier rmc du pack de Flype pour comprendre les commandes qui sont en fait ultra simples. Il suffit de charger ce fichier dans l'éditeur pour voir comment il faut faire. :D

Donc voilà la dernière version du programme en Pure:

Code : Tout sélectionner

XIncludeFile "RMChart.pbi"

If Not RMC_INIT()
  MessageRequester("Error", "Can't initialized RMCHART.DLL", #MB_ICONERROR)
  End
EndIf

#ChartID     = 1
#RegionID    = 1




flags = #PB_Window_SystemMenu
flags | #PB_Window_SizeGadget
flags | #PB_Window_ScreenCentered
flags | #PB_Window_MinimizeGadget
flags | #PB_Window_MaximizeGadget
#LabelAxe="1*2*3*4*5*6*7*8*9*10*11*12*13*14*15*16*17*18*19*20*21*22*23*24*25*26*27*28*29*30*31"

tLineSeries.tRMC_LINESERIES
tLineSeries\nType.l           =#RMC_LINE
tLineSeries\nStyle.l          =#RMC_LINE_CABLE_SHADOW
tLineSeries\nLineStyle.l      =#RMC_LSTYLE_LINE_AREA
tLineSeries\nIsLucent.l       =#False
tLineSeries\nColor.l          =#ColorSpringGreen
tLineSeries\nSeriesSymbol.l   =#RMC_SYMBOL_BULLET
tLineSeries\nWhichDataAxis.l  =1
tLineSeries\nValueLabelOn.l   =#RMC_VLABEL_NONE
tLineSeries\nHatchMode.l      =#RMC_HATCHBRUSH_OFF

tLineSeries2.tRMC_LINESERIES
tLineSeries2\nType.l           =#RMC_LINE
tLineSeries2\nStyle.l          =#RMC_LINE_CABLE_SHADOW
tLineSeries2\nLineStyle.l      =#RMC_LSTYLE_LINE
tLineSeries2\nIsLucent.l       =#False
tLineSeries2\nColor.l          =#ColorRed 
tLineSeries2\nSeriesSymbol.l   =#RMC_SYMBOL_BULLET
tLineSeries2\nWhichDataAxis.l  =1
tLineSeries2\nValueLabelOn.l   =#RMC_VLABEL_NONE
tLineSeries2\nHatchMode.l      =#RMC_HATCHBRUSH_OFF

tLineSeries3.tRMC_LINESERIES
tLineSeries3\nType.l           =#RMC_LINE
tLineSeries3\nStyle.l          =#RMC_LINE_CABLE_SHADOW
tLineSeries3\nLineStyle.l      =#RMC_LSTYLE_LINE
tLineSeries3\nIsLucent.l       =#False
tLineSeries3\nColor.l          =#ColorBananaYellow
tLineSeries3\nSeriesSymbol.l   =#RMC_SYMBOL_BULLET
tLineSeries3\nWhichDataAxis.l  =2
tLineSeries3\nValueLabelOn.l   =#RMC_VLABEL_NONE
tLineSeries3\nHatchMode.l      =#RMC_HATCHBRUSH_OFF

Dim aData.d(30)
For n=0 To 30
  aData(n)=Random(15)
Next n


Dim aData2.d(30)
For n=0 To 30
  aData2(n)=Random(10)+20
Next n

Dim aData3.d(30)
For n=0 To 30
  aData3(n)=Random(15)+60
Next n

If OpenWindow(0, 0, 0, 800, 600,"Graphique températures", flags)

SetWindowColor(0, $FFDDDD)
RMC_CreateChart(WindowID(0), #ChartID, 10,10,600, 450,#ColorLavender , #RMC_CTRLSTYLEFLAT,#False,"", "Tahoma")
RMC_AddRegion(#RegionID, 5, 5, -5, -5,"") 
RMC_AddGrid (#ChartID, #RegionID, #ColorBeige, #True, 0, 0, 0, 0, #RMC_BICOLOR_NONE)
RMC_AddDataAxis(#ChartID, #RegionID,#RMC_DATAAXISLEFT,-15, 40, 11, 8,0,0, #RMC_LINESTYLESOLID, 0, "°", "Températures")
RMC_AddDataAxis(#ChartID, #RegionID,#RMC_DATAAXISRIGHT,0,100, 11, 8,0,0, #RMC_LINESTYLESOLID, 0, "%", "Humidité")
RMC_AddLabelAxis(#ChartID, #RegionID,#LabelAxe,1, 31,#RMC_LABELAXISBOTTOM, 8,0,#RMC_TEXTUPWARD,0,#RMC_LINESTYLESOLID,"Jours Mois")
RMC_Addlegend(#ChartID, #RegionID,"T° Matin*T° Après Midi*% Humidité",#RMC_LEGEND_CUSTOM_LL,#ColorLightYellow,#RMC_LEGENDRECT,#ColorDesertBlue,8,#False)
RMC_AddLineSeriesI(#ChartID, #RegionID,@aData.d(0),31,@adata.d(0),1,tLineSeries)
RMC_AddLineSeriesI(#ChartID, #RegionID,@aData2.d(0),31,@adata2.d(0),1,tLineSeries2)
RMC_AddLineSeriesI(#ChartID, #RegionID,@aData3.d(0),31,@adata3.d(0),1,tLineSeries3)


RMC_Draw(#ChartID)

Repeat
  Event = WaitWindowEvent()  
Until Event = #PB_Event_CloseWindow
EndIf


End
Voilà... Encore un grand merci à Flype pour son travail c'est vraiment super ! :D

A+

André.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Mais de rien Good007, je suis content que tu t'en serves, je me doutais bien que çà ne pouvait pas servir qu'à moi.

Et puis, je n'ai pas fait grand chose à part le wrapper et quelques examples (simples).

Par contre, si tu es satisfait de la DLL, il serait intéressant de faire un maximum d'exemples fonctionnels car l'auteur de la DLL (voir site officiel) s'est dit prêt à inclure PureBasic dans son package si le nombre d'utilisateurs est suffisamment conséquent. Or à en juger le nombre de téléchargements sur ma page, çà l'air d'intéresser du monde.
Image
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Flype et Good07,

vous nous faites un petit CHM qui va bien en français (on va pas se prendre la tête avec du englishhhhhh) :D

J'ai demandé à Fred s'il pouvait integrer le fait de pouvoir ouvrir un fichier d'aide externe pour les commandes faites avec les import, il m'a dit qu'il allait regarder ce qu'il pouvait faire :D
(je suis inetressé pour GDI+)
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Salut Denis,

Le truc c'est qu'il y a déjà un CHM fournit avec la rmchart.dll

Les noms et arguments des fonctions sont les mêmes puisqu'il s'agit d'un wrapper fidèle à la DLL de départ. Effectivement, si PB pouvait gérer les noms de fonctions de Import/EndImport __ET__ des prototypes ce serait très pratique.
Image
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Je sais qu'il y a déjà un chm mais pas en fr

Flype, tu connais la fréquence de mise à jour de cette dll ?
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message par Good07 »

Bonsoir Denis.

Denis à écrit:
Je sais qu'il y a déjà un chm mais pas en fr
Tu sais la doc tu n'en as pas tellement besoin. Moi, je ne parle pas un mot d'anglais et chaque fois que je dois traduire quelque chose, j'utilise l'outil de traduction de Google et bonjour le massacre... :D
En fait comme je le disais dans un post précédent mieux vaut utiliser rmc désigner pour construire ton graphique. Tu peux utiliser toutes les options et voir ce que ça donne en direct. Puis tu sauves dans le presse papier en VB. Ensuite c'est un jeu d'enfant à convertir.
Juste une chose il ne faut pas donner la valeur 0 à #ChartID sous peine d'avoir le message suivant dans RMC_CreateChart() (invalid mémory access) :(
Flype a écrit:
Par contre, si tu es satisfait de la DLL, il serait intéressant de faire un maximum d'exemples fonctionnels car l'auteur de la DLL (voir site officiel) s'est dit prêt à inclure PureBasic dans son package si le nombre d'utilisateurs est suffisamment conséquent. Or à en juger le nombre de téléchargements sur ma page, çà l'air d'intéresser du monde.
Pour l'instant je teste. Chaque fois que je trouve un truc, je le posterai sur le forum. Je fais des essais avec la fonction Info pour pouvoir afficher la valeur d'un point lorsqu'on clique dessus avec la souris. Je sais que tu as déja fait un exemple, mais je ne veux pas utiliser débug pour afficher le résultat.
Autrement il serai intéressant que tous ceux qui utilisent cette DLL poste aussi leurs réalisations pour pouvoir tout regrouper...
Bon c'est assez lent car je ne peux travailler dessus que lorsque je rentre du travail...Mais j'ai encore quelques idées. :wink:

A+

André.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

@good007

as-tu essayé l'exemple 'rmc_player.pb' ?
il montre justement comment utiliser le 'roll-over', et même comment bouger le graphique à la souris (essaye).


@denis
l'anglais - désolé çà va te faire mal aux fesses - mais moi je préfère au francais (pour la prog uniquement). Question d'habitude...
c'est toujours un travail monstrueux la traduction, pas le temps...
Image
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Pourras tu mettre la taille de tes fichiers à coté des fichiers sur la premier page ?
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

voilà c'est fait - c'est vrai que c'est pratique ;-)
Image
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message par Good07 »

Bonjour à tous.

J'ai pas beaucoup le temps de programmer en ce moment, mais je continue avec cette DLL dès que j'ai un moment.
Voici donc une nouvelle version avec 2 graphiques (2 régions) dans la même fenêtre. De plus lorsque vous appuyez sur le bouton gauche de la souris sur un point du graphique, cela ouvre une petite fenêtre qui renseigne sur le point cliqué. Cette fenêtre disparait dès qu'on relache le bouton.
Juste une petite question si quelqu'un peut me répondre. A quoi peut servir la fonction:

Code : Tout sélectionner

SetWindowColor(1, $FFFDF)
A colorier la fenêtre c'est certain. Mais le problème c'est qu'après avoir utiliser cette commande, les fonctions drawtext(), circle(), line() etc... ne fonctionnent plus. :(
Essayez d'enlever le commentaire de la ligne 165 et vous verrez.

Je fait peut être une erreur quelque part, ou bien faut-il utiliser le callback dans ce cas là ? Ou alors un bug de PureBasic ?

Voici le code :

Code : Tout sélectionner

XIncludeFile "RMChart.pbi"
Global RMC_OldCallBack.l,IndexInfo.b
Global Dim Jsemaine$(6)
Global Dim Mesure$(3)
Global Dim Unite$(3)


Restore JourSemaine
For n=0 To 6
  Read Jsemaine$(n)
Next n

Restore Mesures
For n=1 To 3
  Read Mesure$(n)
Next n

Restore Unites
For n=1 To 3
  Read Unite$(n)
Next n

If Not RMC_INIT()
  MessageRequester("Error", "Can't initialized RMCHART.DLL", #MB_ICONERROR)
  End
EndIf

#ChartID     = 1
#RegionID    = 1
#RegionID2   = 2



flags = #PB_Window_SystemMenu
flags | #PB_Window_SizeGadget
flags | #PB_Window_ScreenCentered
flags | #PB_Window_MinimizeGadget
flags | #PB_Window_MaximizeGadget
#LabelAxe="1*2*3*4*5*6*7*8*9*10*11*12*13*14*15*16*17*18*19*20*21*22*23*24*25*26*27*28*29*30*31"


tRegion.tRMC_REGION
tRegion\nLeft.l               =5
tRegion\nTop.l                =5               
tRegion\nWidth.l              =-5
tRegion\nHeight.l             =400
PokeS(@tRegion\sFooter ,"Octobre 2005",200)     
tRegion\nShowBorder.l         =#True

tRegion2.tRMC_REGION
tRegion2\nLeft.l               =5
tRegion2\nTop.l                =410               
tRegion2\nWidth.l              =-5
tRegion2\nHeight.l             =-5
PokeS(@tRegion2\sFooter ,"Octobre 2005",200)
tRegion2\nShowBorder.l         =#True

tGrid.tRMC_GRID
tGrid\nGridBackColor = #ColorBeige
tGrid\nAsGradient    = #True
tGrid\nBicolor       = #RMC_BICOLOR_NONE
tGrid\nLeft          = 0
tGrid\nTop           = 0
tGrid\nWidth         = 0
tGrid\nHeight        = 0

tGrid2.tRMC_GRID
tGrid2\nGridBackColor = #ColorTan
tGrid2\nAsGradient    = #True
tGrid2\nBicolor       = #RMC_BICOLOR_NONE
tGrid2\nLeft          = 0
tGrid2\nTop           = 0
tGrid2\nWidth         = 0
tGrid2\nHeight        = 0


tLineSeries.tRMC_LINESERIES
tLineSeries\nType.l           =#RMC_LINE
tLineSeries\nStyle.l          =#RMC_LINE_CABLE_SHADOW
tLineSeries\nLineStyle.l      =#RMC_LSTYLE_LINE_AREA
tLineSeries\nIsLucent.l       =#False
tLineSeries\nColor.l          =#ColorSpringGreen
tLineSeries\nSeriesSymbol.l   =#RMC_SYMBOL_BULLET
tLineSeries\nWhichDataAxis.l  =1
tLineSeries\nValueLabelOn.l   =#RMC_VLABEL_NONE
tLineSeries\nHatchMode.l      =#RMC_HATCHBRUSH_OFF

tLineSeries2.tRMC_LINESERIES
tLineSeries2\nType.l           =#RMC_LINE
tLineSeries2\nStyle.l          =#RMC_LINE_CABLE_SHADOW
tLineSeries2\nLineStyle.l      =#RMC_LSTYLE_LINE
tLineSeries2\nIsLucent.l       =#False
tLineSeries2\nColor.l          =#ColorRed 
tLineSeries2\nSeriesSymbol.l   =#RMC_SYMBOL_BULLET
tLineSeries2\nWhichDataAxis.l  =1
tLineSeries2\nValueLabelOn.l   =#RMC_VLABEL_NONE
tLineSeries2\nHatchMode.l      =#RMC_HATCHBRUSH_OFF

tLineSeries3.tRMC_LINESERIES
tLineSeries3\nType.l           =#RMC_LINE
tLineSeries3\nStyle.l          =#RMC_LINE_CABLE_SHADOW
tLineSeries3\nLineStyle.l      =#RMC_LSTYLE_LINE
tLineSeries3\nIsLucent.l       =#False
tLineSeries3\nColor.l          =#ColorBananaYellow
tLineSeries3\nSeriesSymbol.l   =#RMC_SYMBOL_BULLET
tLineSeries3\nWhichDataAxis.l  =2
tLineSeries3\nValueLabelOn.l   =#RMC_VLABEL_NONE
tLineSeries3\nHatchMode.l      =#RMC_HATCHBRUSH_OFF

tBareSeries.tRMC_BARSERIES
tBareSeries\nType.l            =#RMC_BARSINGLE 
tBareSeries\nStyle.l           =#RMC_BAR_FLAT
tBareSeries\nIsLucent.l        =#False
tBareSeries\nColor.l           =#ColorWhiteSmoke
tBareSeries\nIsHorizontal.l    =#False
tBareSeries\nWhichDataAxis.l   =1
tBareSeries\nValueLabelOn.l    =#RMC_VLABEL_NONE
tBareSeries\nPointsPerColumn.l =1
tBareSeries\nHatchMode.l       =#RMC_HATCHBRUSH_ON

Dim aData.d(30)
For n=0 To 30
  aData(n)=Random(15)
Next n


Dim aData2.d(30)
For n=0 To 30
  aData2(n)=Random(10)+20
Next n

Dim aData3.d(30)
For n=0 To 30
  aData3(n)=Random(15)+60
Next n

Dim aData4.d(30)
For n=0 To 30
  aData4(n)=Random(15)+1000
Next n



Procedure.l RMC_MyCallback(WindowID, message, wParam, lParam)
  
  Protected Result.l = CallWindowProc_(RMC_OldCallBack, WindowID, message, wParam, lParam)
  
  Select message
    
    Case #WM_COMMAND
      
      Select (wParam >> 16)
        
        Case #RMC_LBUTTONDOWN
          *TINFO.tRMC_INFO = lParam
          
          If *TINFO
              IndexInfo=*TINFO\nDataIndex
              date$=Str(*TINFO\nDataIndex)+"/"+"10"+"/"+"2005"
              Date=ParseDate("%dd/%mm/%yyyy",date$)
              j$=Jsemaine$(DayOfWeek(Date))
            
            If *TINFO\nRegionIndex=1 And *TINFO\nDataIndex<>0
              OpenWindow(1,(WindowMouseX(0)+WindowX(0))+5,(WindowMouseY(0)+WindowY(0))-15,150,50,"",#PB_Window_BorderLess)
              ;SetWindowColor(1, $FFFDF)       
              StartDrawing(WindowOutput(1))
              DrawingMode(#PB_2DDrawing_Transparent)
              FrontColor($FF0000)
              DrawText(5,5,j$)
              DrawText(5,17,date$)
              DrawText(5,29,Mesure$(*TINFO\nSeriesIndex)+" "+ StrD(*TINFO\nData1,2)+Unite$(*TINFO\nSeriesIndex))
              StopDrawing()
            EndIf
            If *TINFO\nRegionIndex=2 And *TINFO\nDataIndex<>0
              OpenWindow(1,(WindowMouseX(0)+WindowX(0))+5,(WindowMouseY(0)+WindowY(0))-15,150,50,"",#PB_Window_BorderLess)
              StartDrawing(WindowOutput(1))
              DrawingMode(#PB_2DDrawing_Transparent)
              FrontColor($FF0000)
              DrawText(5,5,j$)
              DrawText(5,17,date$)
              DrawText(5,29,"Pression"+" "+StrD(*TINFO\nData1,0)+" "+"hPa")
              StopDrawing()   
            EndIf 
          EndIf         
        Case #RMC_LBUTTONUP 
          If IndexInfo<>0
            CloseWindow(1)
          EndIf
        Case #RMC_LBUTTONDBLCLK 
        Case #RMC_RBUTTONDOWN 
        Case #RMC_RBUTTONUP 
        Case #RMC_RBUTTONDBLCLK 
        Case #RMC_MBUTTONDOWN 
        Case #RMC_MBUTTONUP 
        Case #RMC_MBUTTONDBLCLK 
        Case #RMC_SHIFTLBUTTONDOWN 
        Case #RMC_SHIFTLBUTTONUP 
        Case #RMC_SHIFTLBUTTONDBLCLK 
        Case #RMC_SHIFTRBUTTONDOWN 
        Case #RMC_SHIFTRBUTTONUP 
        Case #RMC_SHIFTRBUTTONDBLCLK 
        Case #RMC_SHIFTMBUTTONDOWN 
        Case #RMC_SHIFTMBUTTONUP 
        Case #RMC_SHIFTMBUTTONDBLCLK 
        Case #RMC_CTRLLBUTTONDOWN
        Case #RMC_CTRLLBUTTONUP 
        Case #RMC_CTRLLBUTTONDBLCLK 
        Case #RMC_CTRLRBUTTONDOWN 
        Case #RMC_CTRLRBUTTONUP 
        Case #RMC_CTRLRBUTTONDBLCLK 
        Case #RMC_CTRLMBUTTONDOWN 
        Case #RMC_CTRLMBUTTONUP 
        Case #RMC_CTRLMBUTTONDBLCLK 
          
        Case #RMC_MOUSEMOVE
          
          
          
      EndSelect
      
  EndSelect
  
  ProcedureReturn Result
  
EndProcedure

If OpenWindow(0, 0, 0, 650, 900,"Graphique températures", flags)
  
  If RMC_CreateChart(WindowID(0), #ChartID, 0,0,650, 900,#ColorLavender , #RMC_CTRLSTYLEFLAT,#False,"", "Tahoma")=#RMC_NO_ERROR
    RMC_AddRegionI(#RegionID,tRegion) 
    RMC_AddGridI(#ChartID, #RegionID,tGrid)
    RMC_AddDataAxis(#ChartID, #RegionID,#RMC_DATAAXISLEFT,-15, 40, 11, 8,0,0, #RMC_LINESTYLESOLID, 0, "°", "Températures")
    RMC_AddDataAxis(#ChartID, #RegionID,#RMC_DATAAXISRIGHT,0,100, 11, 8,0,0, #RMC_LINESTYLESOLID, 0, "%", "Humidité")
    RMC_AddLabelAxis(#ChartID, #RegionID,#LabelAxe,1, 31,#RMC_LABELAXISBOTTOM, 8,0,#RMC_TEXTUPWARD,0,#RMC_LINESTYLESOLID,"Jours Mois")
    RMC_Addlegend(#ChartID, #RegionID,"T° Matin*T° Après Midi*% Humidité",#RMC_LEGEND_CUSTOM_LL,#ColorLightYellow,#RMC_LEGENDRECT,#ColorDesertBlue,8,#False)
    RMC_AddLineSeriesI(#ChartID, #RegionID,@aData.d(0),31,@aData.d(0),1,tLineSeries)
    RMC_AddLineSeriesI(#ChartID, #RegionID,@aData2.d(0),31,@aData2.d(0),1,tLineSeries2)
    RMC_AddLineSeriesI(#ChartID, #RegionID,@aData3.d(0),31,@aData3.d(0),1,tLineSeries3)
    RMC_AddRegionI(#RegionID,tRegion2)
    RMC_AddGridI(#ChartID,#RegionID2,tGrid2)
    RMC_AddDataAxis(#ChartID, #RegionID2,#RMC_DATAAXISLEFT,995, 1030, 11, 8,0,0, #RMC_LINESTYLESOLID, 0, "", "Pression")
    RMC_AddLabelAxis(#ChartID, #RegionID2,#LabelAxe,1, 31,#RMC_LABELAXISBOTTOM, 8,0,#RMC_TEXTUPWARD,0,#RMC_LINESTYLESOLID,"Jours Mois")
    RMC_AddBarSeriesI(#ChartID, #RegionID2,@aData4.d(0),31,tBareSeries)
    RMC_Draw(#ChartID)
    RMC_OldCallBack = SetWindowLong_(WindowID(0),#GWL_WNDPROC, @RMC_MyCallback())
  EndIf
  Repeat
    Event = WaitWindowEvent()  
  Until Event = #PB_Event_CloseWindow
EndIf

DataSection
JourSemaine:
Data.s "Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"
Mesures:
Data.s "T° Matin","T° Après Midi","Humidité"
Unites:
Data.s "°","°","%"
EndDataSection

End
A+

André.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Excellent

J'aime beaucoup les courbes un peu épaisses et arrondies

Je n'ai pas encore utilisée cette dll (donc je n'analyse pas le code); sur le graphe des températures, l'aire en dessous de la courbe verte est verdâtre (semi-transparent). C'est normal ?
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message par Good07 »

Bonjour Denis.

denis à écrit:
sur le graphe des températures, l'aire en dessous de la courbe verte est verdâtre (semi-transparent). C'est normal ?
Oui, c'est normal, cette aire correspond en fait au Mini Maxi de la courbe et l'on peut programmer une aire pour chaque courbe. Mais avec plusieurs courbes sur le même graphique, il vaut mieu s'en tenir à une seule sinon tout se mélange et on ne comprend plus rien.
Cette option correspond à la constante #RMC_LSTYLE_LINE_AREA dans tRMC_LINESERIES. En fait, c'est le style de la courbe.
Cette dll à vraiment un potentiel énorme pour celui qui veux utiliser des graphiques pour mettre en valeur une série de chiffre.

André
Répondre