Hallo zusammen,
ich bräuchte für eine Anwendung ein Liniendiagramm, da es in Autoit kein Standard-Controll gibt muss ich das selbst erstellen was ja nicht sonderlich schwer ist.
Für mich besteht jetzt nur die Frage wie ich das Zeichne?!
Würdet ihr dafür GDI+ verwenden, oder doch über GUI?
Liniendiagramm
-
- [ offen ]
-
h0scHberT -
22. Mai 2009 um 13:43 -
Geschlossen -
Erledigt
-
-
Ich würde RMChart verwenden, da gibt es eine DLL dazu: http://www.brothersoft.com/rmchart-download-35638.html
Die DLL verwendet GDIPlus zum Zeichnen, aber vereinfacht das ganze erheblich -
Ich würde RMChart verwenden, da gibt es eine DLL dazu: http://www.brothersoft.com/rmchart-download-35638.html
Die DLL verwendet GDIPlus zum Zeichnen, aber vereinfacht das ganze erheblichhey habe mal nach dem programm gesucht ^^.... auch gefunden ... aber wie verwendet man die jetzt?
MFG chris
-
in der Hilfe unter "Using the DLL(rmchart.dll) wird dir geholfen
-
Ich übersetze heute mal das POWERBASIC-include (rmchar.inc) nach AutoIt. Kann aber nicht etwas dauern, ich muss jetzt erst mal nach Stuttgart...
-
So, das include ist soweit übersetzt, dass Säulendiagramme funktionieren:
Beispiel
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.1.0 (beta)
[/autoit] [autoit][/autoit] [autoit]
Author: Prog@ndyScript Function:
[/autoit] [autoit][/autoit] [autoit]
Beispiel für rmchart#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]
#include<rmchart.au3>
$hGUI = GUICreate("Chart Test", 700,500)
_RMC_LoadDLL("..\rmchart.dll")$ChartID = 2101
[/autoit] [autoit][/autoit] [autoit]
_RMC_CreateChart($hGUI, $ChartID ,10,10,600,450,0,0,0,"","")_RMC_AddRegion($ChartID,5,5,-5,-5)
[/autoit] [autoit][/autoit] [autoit]_RMC_AddCaption($ChartID,1, "Ein Diagramm")
[/autoit] [autoit][/autoit] [autoit]
_RMC_AddGrid($ChartID,1)
_RMC_AddDataAxis($ChartID,1,$RMC_DATAAXISLEFT, 0, 0,11,8, 0 , 0 ,$RMC_LINESTYLEDOT,0,"","")
_RMC_AddLabelAxis($ChartID,1,"Label 1*Label 2*Label 3*Label 4*Label 5", 1, 5, 0, 0, 0, 0, 0, $RMC_LINESTYLENONE,"")Local $Values[5] = [ 34, 12.2, 55, 20, 9]
[/autoit] [autoit][/autoit] [autoit]
$Struct = _RMC_DoubleArrayToStruct($Values)
_RMC_AddBarSeries($ChartID, 1, $Struct, 5, $RMC_BARSINGLE, $RMC_COLUMN_3D_GRADIENT, True, 0x3333FF)_RMC_Draw($ChartID)
[/autoit] [autoit][/autoit] [autoit]GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
If GUIGetMsg()=-3 Then Exit
WEndFunc _RMC_DoubleArrayToStruct(Const ByRef $adValues)
[/autoit]
; Prog@ndy
Local $UBound = UBound($adValues)
If $UBound=0 Then Return SetError(1,0,0)
Local $tdValues = DllStructCreate("double[" & $UBound & "]")
For $i = 1 To $UBound
DllStructSetData($tdValues,1, $adValues[$i-1], $i)
Next
Return $tdValues
EndFunc//Edit: Anhang entfernt, neue Version in Post #19
-
Einfach nur genial @ pro@andy....
Nur könnte man es nich noch etwas vereinfachen?
Sodass man nur noch ne art des diagrammes per id z.b. auswählt und dann noch die daten in nem 2d Array oder so?MFG chris
Fertige Version der SMART RMC ist in neuem Post ... [ gelöst ] RMC_Smart UDF ( Säulendiagramme )
-
Die DLL gibt es auch in dem Paket, das ich schon verlinkt habe: http://www.brothersoft.com/rmchart-download-35638.html
Und den Aufruf kann man schon vereinfachen, aber das kannst ja auch du tun Mir geht es jezt erst mal darum, dass die Funktionen der DLL 1:1 übersetzt werden.
-
warum geht folgender DLL-Aufruf nicht?
[autoit]DllCall("rmchart.dll", "LONG", "RMC_CREATECHART", "HWND", $GUI, "LONG", $Id, "LONG", 10, "LONG", 10,"LONG", 600, "LONG", 450,)
[/autoit]
laut RMChart-Hilfe ist der Rest doch Optional, siehe hier:Code
Alles anzeigennResult (LONG) = RMC_CreateChart( ByVal nParentHndl (LONG), ByVal nCtrlId (LONG), ByVal nX (LONG), ByVal nY (LONG), ByVal nWidth (LONG), ByVal nHeight (LONG), Optional ByVal nBackColor (LONG), Optional ByVal nCtrlStyle (LONG), Optional ByVal nExportOnly (LONG), Optional ByRef sBgImage (ASCIIZ), Optional ByRef sFontName (ASCIIZ), Optional ByVal nToolTipWidth (LONG), Optional ByVal nBitmapBKColor (LONG) )
@progandy
wie kommst du manchml auf DWord wenn doch in der Readme long steht?! -
Pee hat hierfür auch schon mal eine UDF geschrieben, vllt gefällt dir die ja besser, als mit so ner unhandlichen dll rumzuexperimentieren
https://autoit.de/index.php?page=Thread&postID=33602
hau rein gruß oli
-
@oliverh: Die funktioniert ja immer noch ...
@h0scHberT: Schau dir doch mal an, wie ich die optinalen Parameter gelöst habe Beim DLLCall müssen sie immer angegeben sein, aber die DLL versteht den Wert 0 als nicht gegebenen Parameter. Ich habe genau diese Funktion RMC_CREATECHART doch auch in der UDF verwendet.DWORD und LONG haben die gleiche Zahl von Bytes und Farben sind immer positive Zahlen. Daher ist DWORD der bessere Datentyp.
//Edit: Ich hab bisher 33/187 Funktionen, also etwa 18%
-
Servus...
Also habe jetzt mal eine art SMART RM Chart au3 erstellt...
Sie kann bis jetzt das hier....[Blockierte Grafik: http://img200.imageshack.us/img200/139/aufzeichneny.png]
Wobei es mit nur 4 UDF Aufrufen erstellt wird....
dabei werden die Daten aus einem 2D array akzeptiert...
die rmchart.dll habe ich als EmbeddedDLL eingebunden und wird somit auch nicht mehr benötigt...
Files die benötigt werden sind im Anhang...Spoiler anzeigen
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.0.0
[/autoit] [autoit][/autoit] [autoit]
Authors: chrisatack ( Basics by Prog@ndy )Script Function:
[/autoit] [autoit][/autoit] [autoit]
Beispiel für rmchart_smart#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include 'rmchart_smart.au3'$hGUI = GUICreate("Chart Test", 700,500)
[/autoit] [autoit][/autoit] [autoit]_RMC_Smart_StartUp()
[/autoit] [autoit][/autoit] [autoit]
$hChart = _RMC_Smart_ChartCreate($hGUI,"Ein Test Diagramm",10,10,600,450)Dim $data[5][2]
[/autoit] [autoit][/autoit] [autoit]
$data[0][0] = "Menschen"
$data[0][1] = 90
$data[1][0] = "Tiere"
$data[1][1] = 12.5
$data[2][0] = "Elefanten"
$data[2][1] = 55
$data[3][0] = "Mücken"
$data[3][1] = 20
$data[4][0] = "Affen"
$data[4][1] = 9_RMC_Smart_ChartAdd2DArray($hChart,$data,0x00FF00)
[/autoit] [autoit][/autoit] [autoit]
_RMC_Smart_ChartDraw($hChart)GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
If GUIGetMsg()=-3 Then Exit
WEndFertige Version der SMART RMC ist in neuem Post ... [ gelöst ] RMC_Smart UDF ( Säulendiagramme )
MFG chris
-
hübsch bin gespannt, was ihr noch alles aus der dll rausholen könnt...
-
- Offizieller Beitrag
Oh, das sieht gut aus. Sowas könnte ich gerade für mein aktuelles Projekt gebrauchen. Wollte die Daten erst nach Excel exportieren und dort darstellen, aber das hier gefällt mir noch besser.
-
Es dauert aber noch ne Weile bis auch die ganzen RMC_Set... -Funktionen übersetzt sind
Bisher hab ich RMC_Add..., RMC_CO..., RMC_Create..., RMC_Draw... und RMC_Get... Insgesamt sind das etwa 36%, der Rest fehlt nochhübsch bin gespannt, was ihr noch alles aus der dll rausholen könnt...
Schu dir mal die Beispiele aus dem Komplettpaket an (die .rmc-Dateien mit dem rmcdesigner.exe öffnen) -
- Offizieller Beitrag
Das Projekt hat noch etwas Zeit. Wenn Du das so in den nächsten 2-3 Wochen schaffst...
Danke schonmal für die ganze Arbeit, die Du Dir damit machst. -
Ach so
Inzwischen hab ich dieHälfte fertig.
//Edit: jetzt sind es66%75%80% -
Ach so
Inzwischen hab ich die Hälfte fertig.du machst auch nichts anderes was
naja wenn du soweit bist kannst du mir dann bitte die neuen sachen + vieleicht nen Bsp. schicken dann vergrößer ich meine RMC_Smart UDF...
natürlich wennns dir recht istMFG chris
-
So, die Funktionen sind jetzt zu 97% übersetzt. Die restlichen sind denke ich unnötig
Ein Beispiel mit ein paar mehr Funktionen:Spoiler anzeigen
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.1.0 (beta)
[/autoit] [autoit][/autoit] [autoit]
Author: myNameScript Function:
[/autoit] [autoit][/autoit] [autoit]
Template AutoIt script.#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]
#include<rmchart.au3>$hGUI = GUICreate("Chart Test", 700,500)
[/autoit] [autoit][/autoit] [autoit]
_RMC_LoadDLL("..\rmchart.dll")
;~ MsgBox(0, '', _RMC_GetVersion())
$ChartID = 2101
_RMC_CreateChart($hGUI, $ChartID ,10,10,600,450,0,0,0,"","",100)_RMC_AddRegion($ChartID,5,5,-5,-5)
[/autoit] [autoit][/autoit] [autoit]_RMC_AddCaption($ChartID,1, "Ein Diagramm")
[/autoit] [autoit][/autoit] [autoit]
_RMC_AddGrid($ChartID,1)
_RMC_AddDataAxis($ChartID,1,$RMC_DATAAXISLEFT, 0, 60,11,8, 0 , 0 ,$RMC_LINESTYLEDOT,0,"","")
_RMC_AddLabelAxis($ChartID,1,"Label 1*Label 2*Label 3*Label 4*Label 5", 1, 5, 0, 0, 0, 0, 0, $RMC_LINESTYLENONE,"")Local $Values[5] = [ 34, 12.2, 55, 20, 9]
[/autoit] [autoit][/autoit] [autoit]
$Struct = _RMC_A2SDouble($Values)
_RMC_AddBarSeries($ChartID, 1, $Struct, 5, $RMC_BARSINGLE, $RMC_COLUMN_3D_GRADIENT, True, 0x3333FF)_RMC_SetCustomToolTipText($ChartID,1,1,3,"TestText")
[/autoit] [autoit][/autoit] [autoit]
_RMC_SetCtrlStyle($ChartID, $RMC_CTRLSTYLE3DLIGHT )_RMC_Zoom($ChartID,$RMC_ZOOM_INTERNAL)
[/autoit] [autoit][/autoit] [autoit]
_RMC_Draw($ChartID)$btnWerte = GUICtrlCreateButton("Zufallswerte", 10, 465, 100, 30)
[/autoit] [autoit][/autoit] [autoit]
$btnInfo = GUICtrlCreateButton("Infos", 120, 465, 100, 30)GUISetState()
[/autoit] [autoit][/autoit] [autoit]Sleep(1000)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
Switch GUIGetMsg()
Case -3
Exit
Case $btnWerte
Local $Values[5] = [ Random(0,60), Random(0,60), Random(0,60), Random(0,60), Random(0,60)]
$Struct = _RMC_A2SDouble($Values)
_RMC_SetSeriesData($ChartID, 1, 1, $Struct, 5)
_RMC_SetCtrlBGColor($ChartID, Random(0x555555,0xCCCCCC,1) )
_RMC_Draw($ChartID)
Case $btnInfo
MsgBox(0, 'Zoomen des Diagramms', ">> Zoom: Linke Muastaste drücken, REchteckaufziehen, loslassen" & @CRLF & ">> Letzte Zoomeinstellung: rechte Maustaste" & @CRLF & ">> Nächste Zoomeinstellung: SHIFT + rechte Maustaste" & @CRLF & ">> Standardeinstellung: mittlere Maustaste")
EndSwitch
WEndchrisatack: Mach ruhig mit deiner RMC_Smart weiter
-
- Offizieller Beitrag
Bei der rmchart.au3 sind ein paar EndFunc auseinander geschrieben (End Func) und erzeugen Syntaxfehler.
Wenn man diese aber korrigiert, dann funktioniert alles 1A!Super! Vielen Dank!
P.S.: Darf man die DLL ("rmchart.dll") hier posten? Ansonsten müssen sich Interessierte halt noch das Setup downloaden und installieren.
-