1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Schmunke

Beiträge von Schmunke

  • Webdriver und POST-Request (mit Datenpaket) ... wie ?

    • Schmunke
    • 25. September 2024 um 15:10

    Ja ... danke für deine Info.

    Hab auch verstanden, was du gemeint hast ... wenn ich jetzt mehr drüber nachdenke komme ich auch zu dem Schluß, das es so nicht gehen kann ...


    ok ... erledigt.

  • Webdriver und POST-Request (mit Datenpaket) ... wie ?

    • Schmunke
    • 25. September 2024 um 09:19

    ok ... aber danke, das du dich dazu gemeldet hast ...

  • Webdriver und POST-Request (mit Datenpaket) ... wie ?

    • Schmunke
    • 25. September 2024 um 08:05

    Hallo

    Beim Umstellen meiner Programme von WinHttp.au3 auf Webdriver (ich nehme den geckodriver) ist mir aufgefallen, daß es keine Möglichkeit gibt einen POST-Request zu senden ... geht das nicht ?

    Mit '_WinHTTPSimpleRequest($hConnect, "POST", <Unterseite>, <von wo wir kommen>, <Anhang>)' konnte man ein Datenpaket mitschicken ... das kann man mit dem Webdriver nicht machen, oder ?

    Es würde vielen vereinfachen, wenn man dem Webdriver einen solchen POST zuschicken könnte (also mit Datenpaket).

    Der Befehl '__WD_Post() ' geht damit nicht ... der ist für was anderes ... oder muss ich die Daten nur anders verpacken und dann mit __WD_Post() verschicken ?

    Oder geht es einfach nicht mit einem Webdriver ... ist ein POST-Request gar nicht umsetzbar ?

  • Unterstüzung gesucht für Webdriver

    • Schmunke
    • 4. Dezember 2021 um 18:57

    Hallo,

    ich suche jemanden, der mich Unterstützt beim Programmieren mit dem Webdriver (geckodriver & FF).

    Ich habe mal ein Programm geschrieben, das auf WinHTTP beruht ... möchte das jetzt aber für den Webdriver umgeschrieben haben.

    Ein paar Erfahrungen habe ich auch schon gemacht ... aber es gibt immer wieder Stellen in so einem HTML-Code, der nicht so einfach ist - vor allem, wenn man eigentlich gar keine Ahnung von WebSites und deren Aufbau hat ...

    Also - du solltest Erfahrung im Aufbau von Webseiten haben und auch Erfahrung im Umgang mit den Webdriver ...

    Alles andere per PM

    Danke

  • Hintergrundfarbe in einem GUICtrlCreateTab ändern

    • Schmunke
    • 25. März 2020 um 15:30

    Hallo

    ich möchte die Hintergrundfarbe in einem GUICtrlCreateTab(...) ändern.

    Standardmässig ist die Hintergrundfarbe immer weiß ... das möchte ich aber nicht.

    Ich möchte die Standardhintergrundfarbe haben, die ich auch bei der Erstellung einer GUI habe - ohne vorher eine Farbe definiert zu haben.

    Das müsste eigentlich die Farbe sein, mit denen ich auch die Windows-Fenster bediene, oder ?

    Code
    #include <GUIConstantsEx.au3>
    
    Example()
    
    Func Example()
        GUICreate("My Test-GUI Tab",600,150,-1,-1)
    
        GUISetBkColor(0x00E0FFFF)
        GUISetFont(9, 300)
    
        GUICtrlCreateTab(10, 10, 500, 100)
    
        GUICtrlCreateTabItem(" Typ HPL ")
        GUICtrlCreateLabel("Label 00", 30, 80, 50, 20)
        GUICtrlCreateButton("OK", 20, 50, 50, 20)
        GUICtrlCreateInput("DEFAULT", 80, 50, 70, 20)
    
        GUICtrlCreateTabItem(" Typ LP ")
        GUICtrlCreateLabel("Label 41", 30, 80, 50, 20)
        GUICtrlCreateCombo("", 20, 50, 90, 120)
        GUICtrlSetData(-1, "LP 40/80|LP 40/120|LP 40/175|LP 40/190|LP 40/235|LP 40/275|LP 40/295|LP 40/430|LP 50/175|LP 50/425|LP 50/695|LP 50/950", "LP 40/175")
        GUICtrlCreateButton(" Übernehmen ", 180, 50, 120, 20)
    
        GUICtrlCreateTabItem(" Typ LPSA ")
        GUICtrlSetState(-1, $GUI_SHOW)
        GUICtrlCreateLabel("Label 22", 30, 80, 50, 20)
        GUICtrlCreateButton("...", 140, 50, 50)
    
        GUICtrlCreateTabItem("") 
    
        GUICtrlCreateLabel("Label 33", 20, 130, 50, 20)
    
        GUISetState(@SW_SHOW)
    
        Local $idMsg
        
        While 1
            $idMsg = GUIGetMsg()
    
            If $idMsg = $GUI_EVENT_CLOSE Then ExitLoop
        WEnd
    EndFunc   ;==>Example
    Alles anzeigen
  • _GDIPlus_GraphicsDrawStringRotate

    • Schmunke
    • 18. März 2020 um 10:54

    so ... ich hab die Function endlich in mein Programm eingebaut ... und ich mus sagen ... PERFEKT !!

    Danke auch noch an die Leute, die mich hier unterstützt haben - vor allem water, Bugfix, Musashi, alpines, Mars und auch dir, Oscar ...


    Anbei mal ein Screenshot des Programms ...

  • _GDIPlus_GraphicsDrawStringRotate

    • Schmunke
    • 12. März 2020 um 12:47

    wow ... das is ja cool ... das sehe ich eben erst !!

    Genau sowas habe ich gesucht !! ... aber ganz genau sowas !!

    PERFEKT !!!

    ... bau ich gleich ma ein ...

    RSchmidt

  • _GDIPlus_GraphicsDrawCurve ohne 'Abrundungen'

    • Schmunke
    • 6. Februar 2020 um 16:03

    Mars ... was soll ich sagen ...

    PERFEKT !! :rock::rock::klatschen::klatschen:

    der Text bleibt jetzt erhalten.

    Danke ^^

  • _GDIPlus_GraphicsDrawCurve ohne 'Abrundungen'

    • Schmunke
    • 4. Februar 2020 um 09:52

    BugFix ... hhmmm .... sowas hat den Info-Text erzeugt.

    1 Sek. stehen lassen und dann einen weiteren ToolTip erzeugt - nur kürzer.

    Das das Win 7 ist macht nicht den Unterschied, oder ?

    Spoiler anzeigen


    ToolTip($sText, 10, ($wAktReg * 35) + 15, $sTitle, 1)

    Sleep($sSec * 1000)

    aber danke, das du nochmal nachgeschaut hast ...

  • _GDIPlus_GraphicsDrawCurve ohne 'Abrundungen'

    • Schmunke
    • 4. Februar 2020 um 08:12

    Mars - ich habe jetzt mal dein Beispiel mit dem routierenden Text probiert ...

    Sieht gut aus ... aber leider verschwindet der Text, sobald ich eine MsgBox auf das Fenster lege.

    Die MsgBox wird aufgerufen, wenn ich das Programm durch Klicken auf das Kreuz beende.

    Nach dem verschieben der MsgBox ist der Text leider weg.

    Hier mal nen Screenshot dazu

    Bilder

    • Unbenannt.png
      • 11,08 kB
      • 414 × 481
  • _GDIPlus_GraphicsDrawCurve ohne 'Abrundungen'

    • Schmunke
    • 4. Februar 2020 um 08:02

    alpines

    Danke für die Demo 'falsche Darstellung / korrekte Darstellung'. Klappt bei mir jetzt auch.

  • _GDIPlus_GraphicsDrawCurve ohne 'Abrundungen'

    • Schmunke
    • 3. Februar 2020 um 18:43

    schau mal hier ... ich hab hier 2 Screenshots. 1 mal mit dem Mouseover und 1 mal direkt nach dem Mouseover.

    Ein verschieben der GUI oder klicken auf die GUI zaubert den verschwundenen Text leider nicht wieder her ...

    Übrigens ... das ist ein MouseOver mit AuoIt erstellt ...


    mit MouseOver


    direkt danach

  • _GDIPlus_GraphicsDrawCurve ohne 'Abrundungen'

    • Schmunke
    • 3. Februar 2020 um 15:14
    Zitat von BugFix

    Stimmt, das ist ein Nachteil bei allen Zeichenoperationen mit _WinAPI_.... Da muss man die Message WM_Activate registrieren und erneut zeichnen lassen.

    das ist nicht alles. Ein MouseOver killt mir auch den Text ...

    aber sonst - sehr gut gemacht - so wollte ich das auch haben ...

  • _GDIPlus_GraphicsDrawCurve ohne 'Abrundungen'

    • Schmunke
    • 3. Februar 2020 um 09:13

    BugFix ... anteilig gelöst - ja ... Danke nochmals dafür.

    Leider verbleibt der Text nicht in der GUI wenn man das Fenster minimiert / maximiert oder ein anderes Fenster sich darüber legt.

    Deswegen bin ich gerade dabei den Bereich mit dem gedrehten Text von der GUI in die Bitmap (GDI+) zu kopieren ... hoffe ich krieg das irgendwie hin ...

    Ich schau mir mal die Lösung von Mars an und melde mich dann wieder ... aber erst heute Abend.

    Danke

    Schmunke

  • Text 90° gedreht in GUI

    • Schmunke
    • 2. Februar 2020 um 18:32

    ah - da schau her ... auf Group4 wäre ich nicht gekommen ... ja, es geht !

    Danke ^^

  • Text 90° gedreht in GUI

    • Schmunke
    • 2. Februar 2020 um 17:22

    BugFix - Danke ... ja, so hab ich mir das schon gedacht.

    ... schwieriger ist für mich deine Funktion in meinen Code reinzubekommen ... ich kriegs einfach nicht hin.

    Mir helft der Brückenschlag von deinen benutzen _WinAPI_-Befehlen zur Bitmap in meinem Code ...

    der Aufruf mit

    _WriteRotateText($GUI, GUICtrlRead($In), GUICtrlRead($inX), GUICtrlRead($inY), GUICtrlRead($inDeg), _

    GUICtrlRead($inSize), GUICtrlRead($inWeight), $type, $readFont, $col, $bkcol)

    ist richtig gut ...

    Leider nützen mir auch Erklärungen nichts, da mir die Thematik einfach zu unverständlich ist.

    Letztendlich möchte die Grafik abspeichern und auch ausdrucken ... mit den gedrehten Text.

    Vielleicht kann das einer mal irgendwie ... zusammenführen ?

    ... die Textdatei - ah ! ja ... einen Moment.

    ... dann nur auf 'Kennlinie berechnen' gehen.

    Die Textdatei bitte im gleichen Verz. lassen

    Dateien

    LP 211 - FS-Verlauf Temp.txt 273,16 kB – 369 Downloads
  • Text 90° gedreht in GUI

    • Schmunke
    • 2. Februar 2020 um 15:57

    ich habe ein weiteres Problem ...

    mit dem Befehl _GDIPlus_GraphicsDrawString kann Text auch vertikal angezeigt werden.

    Ich möchte den Text aber um 90 Grad gedreht haben ... aber eben in die andere Richtung !

    Die Zeile 385 führt den _GDIPlus_GraphicsDrawString und schreibt den Text "Kraft [N]".

    Nur müßte der Text jetzt noch um 180° gedreht werden. Leider gibt das die Funktion nicht her.

    Es gab dazu von BugFix eine Funktion : Link

    Mit dieser Funktion könnte ich das ja auch machen.

    Leider bekomme ich das ganze nicht in meiner GUI integriert (bin zu doof) ... irgendwo mach ich da was falsch.

    Wie muss ich das anpassen ? Ich denke, es muss in die Bitmap rein ... aber wie ?

    Oder kann ich das doch mit einem der _GDIPlus_Graphics... umsetzen ? ... mit welchem ?

    Danke

    C
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <WinAPISys.au3>
    #include <Array.au3>
    #include <Excel.au3>
    #include <GuiListView.au3>
    #include <File.au3>
    #include <String.au3>
    
    ; Hauptfenster
    Global $HF_Form1, $HF_Group2, $HF_Group3, $HF_Group4, $HF_Group5, $HF_Group6, $HF_Group7, $HF_Group8, $HF_Group9, $HF_Radio1, $HF_Radio2
    Global $HF_Button1, $HF_Button2, $HF_Button3, $HF_Button4, $HF_Button5, $HF_Button6, $HF_Button7, $HF_Button8
    Global $HF_Inp_DP, $HF_Inp_SS, $HF_Inp_LHR, $HF_Inp_LMR, $HF_Inp_Masse, $HF_Inp_VNENN, $HF_Inp_FAB, $HF_Inp_BEMERK, $HF_Inp_PBAR, $HF_Inp_XD
    Global $HF_Inp_DD1, $HF_Inp_NG1, $HF_Inp_DD2, $HF_Inp_NG2, $HF_Inp_DD3, $HF_Inp_NG3, $HF_Inp_DD4, $HF_Inp_NG4, $HF_Inp_NS, $HF_Inp_SO, $HF_Inp_LA
    Global $HF_Inp_NA, $HF_Inp_LZ, $HF_Inp_NZ
    Global $HF_Label1, $HF_Label2, $HF_Label3, $HF_Label4, $HF_Label5, $HF_Label6, $HF_Label7, $HF_Label8, $HF_Label9, $HF_Label10, $HF_Label11, $HF_Label12
    Global $HF_Label13, $HF_Label14, $HF_Label15, $HF_Label16, $HF_Label17, $HF_Label18, $HF_Label19, $HF_Label20, $HF_Label21, $HF_Label22, $HF_Label23
    Global $HF_Label24, $HF_Label25, $HF_Label26, $HF_Label27, $HF_Label28, $HF_Label29, $HF_Label30, $HF_Label31, $HF_Label32, $HF_Label33, $HF_Label34
    Global $HF_Label35, $HF_Label36, $HF_Label37, $HF_Label38, $HF_Label39, $HF_Label40, $HF_Label41, $HF_Label42, $HF_Label43, $HF_Label44, $HF_Label45
    Global $HF_Label46, $HF_Label47, $HF_Label48, $HF_Label49, $HF_Label50, $HF_Label51, $HF_Label52, $HF_Label53, $HF_Label54, $HF_Label55
    
    ; Grafikfenster
    Global $NF_Form1, $NF_Group1, $NF_Group2, $NF_Group3, $NF_Group4, $NF_Group5, $NF_Group6
    Global $NF_ButtonSpeichern, $NF_ButtonEnde, $NF_ButtonPufferBerechnen, $NF_ButtonKennlinieBerechnen
    Global $NF_Inp_SS_2, $NF_Inp_LHR_2, $NF_Inp_Masse_2, $NF_Inp_VNENN_2, $NF_Inp_PBAR_2, $NF_Inp_DD1_2, $NF_Inp_NG1_2, $NF_Inp_DD2_2, $NF_Inp_NG2_2, $NF_Inp_NS_2, $NF_Inp_SO_2
    Global $NF_Inp_LA_2, $NF_Inp_NA_2, $NF_Inp_LZ_2, $NF_Inp_NZ_2
    Global $NF_Label1, $NF_Label2, $NF_Label3, $NF_Label4, $NF_Label5, $NF_Label6, $NF_Label7, $NF_Label8, $NF_Label9, $NF_Label10, $NF_Label11, $NF_Label12
    Global $NF_Label13, $NF_Label14, $NF_Label15, $NF_Label16, $NF_Label17, $NF_Label18, $NF_Label19, $NF_Label20, $NF_Label21, $NF_Label22, $NF_Label23
    Global $NF_Label24, $NF_Label25, $NF_Label26, $NF_Label27, $NF_Label28, $NF_Label29, $NF_Label30, $NF_Label31, $NF_Label32, $NF_Label33, $NF_Label34
    Global $NF_Label35, $NF_Label36, $NF_Label37, $NF_Label38, $NF_Label39, $NF_Label40, $NF_Label41, $NF_Label42, $NF_Label43, $NF_Label44, $NF_Label45
    Global $NF_Label46, $NF_Label47, $NF_Label48, $NF_Label49, $NF_Label50
    
    Global $sLeer = "                                                                      "
    Global $aDB, $sSelected = "", $boDEBUG = False
    
    Const $Pi4 = 0.7853981633975
    Const $G0 = 9.81            ; Erdbeschleunigung
    Const $RHO = 890            ; Öldichte 890 kg/m3 (Liste mit verschiedenen Dichten ?)
    Const $NPOL = 1.35        ; Polytropenexponent (wovon abhängig ?)
    Const $ZETA = 1.55        ; Drosselbeiwert     (woher kommt der ? was bedeutet er ?)
    Const $ETA = 0.95            ; mech. Wirkungsgrad (temperaturabhängig ?)
    Const $K = 1.25            ; Kurvenformfaktor   (woher kommt der ? was bedeutet er ?)
    Const $VFAKT = 1.15        ; Aufprallgeschwindigkeit = 115% der Nenngeschwindigkeit nach EN 81 (wird bezweifelt !)
    Const $EERSATZ = 1515    ; Ersatz E-Modul in N/mm2
    Const $sVersion = "Version 3.0.0 vom 19.12.2019"
    Const $DATEINAME = "LP 211 - FS-Verlauf.txt"
    Const $sDatenbank = "Liftpuffer Typ LP.xlsx"
    
    Dim $hFile, $boBerechnen, $boSpeichern, $sDummy, $nMsg_HF, $nMsg_NF, $sText, $DKZ, $sBOBI
    Dim $sDatum, $DP, $SS, $SM, $LHR, $LMR, $D1, $A1, $A2, $D2, $D3, $DKS, $COFF, $CHR, $V0KOPF, $HGAS
    Dim $XI, $XI2, $XD, $XDNEU, $X, $SX, $SO, $SA, $SZ, $PRJN, $XPR, $DXPR, $VPXP, $VPX, $FPX1P, $FPX1, $AXIP, $AXI, $TP, $T
    Dim $ADX, $ADU, $S, $DAD, $SX, $NS, $ADO, $LA, $ADA, $LZ, $ADZ, $P1X, $ZRA, $P2X, $V0, $AKS, $P0, $FRANF, $FRUECK, $AMITTLS, $AMITTLT
    Dim $A1, $FC, $CON, $FPX1, $FPX2, $FVX, $B0, $B1, $B2, $DFP, $FPMAXI, $XFPMAX, $XFPMAXI, $Masse, $AMAX, $XAMAX, $EUM, $VPX2Q, $VPX2
    Dim $VP, $VNENN, $FAB, $BEMERK, $EKIN, $EPOT, $EGES, $FPMAX, $PBAR, $P0, $FDYN, $EKINX1, $ANSTFL, $XSCHWING, $SCHWING, $VGAS
    Dim $SYSTEM, $ADERF, $DDERF, $NGERF, $NG, $DD, $DD1, $NG1, $AD1, $DD2, $NG2, $AD2, $ADVOR, $ADPRO
    Dim $NA, $NZ, $NEUXD, $FU, $FO, $NR, $NE
    
    Dim $SS_2, $LHR_2, $Masse_2, $VNENN_2, $PBAR_2, $DD1_2, $NG1_2, $DD2_2, $NG2_2, $NS_2, $SO_2, $LA_2, $NA_2, $LZ_2, $NZ_2, $B0_2, $B1_2, $B2_2, $VP_2, $VGAS_2, $FU_2, $FO_2
    Dim $ADVOR_2, $EGES_2, $FPMAX_2, $SM_2, $D1_2, $D2_2, $D3_2, $A1_2, $A2_2, $AKS_2, $DKS_2, $COFF_2, $CHR_2, $V0KOPF_2, $HGAS_2, $PRJN_2, $DXPR_2, $P2X_2, $XFPMAX_2, $XAMAX_2
    Dim $CON_2, $EKIN_2, $EPOT_2, $EGES_2, $FPMAX_2, $P0_2, $FDYN_2, $XD_2, $SCHWING_2, $VFAKT_2, $AD1_2, $NG_2, $NR_2, $XI_2, $FPX2_2, $XSCHWING_2, $FPMAX_2, $AMAX_2, $FRUECK_2
    Dim $Min_XI, $Max_XI, $Min_VPXP, $Max_VPXP, $Min_FPX1P, $Max_FPX1P, $Min_AXIP, $Max_AXIP, $Min_TP, $Max_TP, $DP_2, $AD2_2, $EKINX1_2
    Dim $SO_2, $SZ_2, $SA_2, $XPR_2, $VPXP_2, $FPX1P_2, $AXIP_2, $TP_2, $ADU_2, $DAD_2, $ADO_2, $ADA_2, $ADZ_2
    Dim $ZRA_2, $V0_2, $AMAX_2, $EUM_2, $VPX_2, $FPX1_2, $AXI_2, $T_2, $ANSTFL_2
    
    Dim $hEnterDummy
    
    KennlinieZeichnen()
    
    Func FelderAnzeigen_NF()
        ; Daten des aktuellen Puffers
        GUICtrlSetData($NF_Label19, i_ZahlKomma($FAB))
        GUICtrlSetData($NF_Label49, i_ZahlKomma($SS))
        GUICtrlSetData($NF_Label20, i_ZahlKomma($LHR))
        GUICtrlSetData($NF_Label21, i_ZahlKomma($Masse))
        GUICtrlSetData($NF_Label22, i_ZahlKomma($B0))
        GUICtrlSetData($NF_Label23, i_ZahlKomma($VNENN))
        GUICtrlSetData($NF_Label24, i_ZahlKomma($VP))
        GUICtrlSetData($NF_Label25, i_ZahlKomma($PBAR))
        GUICtrlSetData($NF_Label26, i_ZahlKomma($VGAS))
        GUICtrlSetData($NF_Label27, $NG1 & " Ø " & i_ZahlKomma($DD1) & " mm")
        GUICtrlSetData($NF_Label28, $NG2 & " Ø " & i_ZahlKomma($DD2) & " mm")
        GUICtrlSetData($NF_Label29, i_ZahlKomma($NS))
        GUICtrlSetData($NF_Label30, i_ZahlKomma($SO))
        GUICtrlSetData($NF_Label31, i_ZahlKomma($FU))
        GUICtrlSetData($NF_Label32, i_ZahlKomma($FO))
        GUICtrlSetData($NF_Label33, i_ZahlKomma($LA))
        GUICtrlSetData($NF_Label34, i_ZahlKomma($NA))
        GUICtrlSetData($NF_Label35, i_ZahlKomma($LZ))
        GUICtrlSetData($NF_Label36, i_ZahlKomma($NZ))
    
        ; veränderbare Daten des Puffers
        GUICtrlSetData($NF_Inp_SS_2, $SS_2)
        GUICtrlSetData($NF_Inp_LHR_2, $LHR_2)
        GUICtrlSetData($NF_Inp_Masse_2, $Masse_2)
        GUICtrlSetData($NF_Label37, i_ZahlKomma($B0_2))
        GUICtrlSetData($NF_Label38, i_ZahlKomma($FU_2))
        GUICtrlSetData($NF_Label39, i_ZahlKomma($VP_2))
        GUICtrlSetData($NF_Inp_VNENN_2, i_ZahlKomma($VNENN_2))
        GUICtrlSetData($NF_Label40, i_ZahlKomma($VGAS_2))
        GUICtrlSetData($NF_Inp_PBAR_2, i_ZahlKomma($PBAR_2))
        GUICtrlSetData($NF_Inp_NG1_2, $NG1_2)
        GUICtrlSetData($NF_Inp_DD1_2, i_ZahlKomma($DD1_2))
        GUICtrlSetData($NF_Inp_NG2_2, $NG2_2)
        GUICtrlSetData($NF_Inp_DD2_2, i_ZahlKomma($DD2_2))
        GUICtrlSetData($NF_Label43, i_ZahlKomma($FO_2))
        GUICtrlSetData($NF_Inp_NS_2, i_ZahlKomma($NS_2))
        GUICtrlSetData($NF_Inp_SO_2, i_ZahlKomma($SO_2))
        GUICtrlSetData($NF_Inp_LA_2, i_ZahlKomma($LA_2))
        GUICtrlSetData($NF_Inp_NA_2, i_ZahlKomma($NA_2))
        GUICtrlSetData($NF_Inp_LZ_2, i_ZahlKomma($LZ_2))
        GUICtrlSetData($NF_Inp_NZ_2, i_ZahlKomma($NZ_2))
    EndFunc
    
    Func KeZe_Gui()
        _GDIPlus_Startup()
    
        #Region ### START Koda GUI section ### Form=c:\program files (x86)\autoit3\scite\koda\forms\lp nebenfenster.kxf
        $NF_Form1 = GUICreate("Liftpuffer - Testing", 1580, 880, -1, -1)
        GUISetFont(10, 400, 0, "MS Sans Serif")
        $NF_Group2 = GUICtrlCreateGroup(" aktuellen Pufferdaten ", 8, 4, 276, 482)
        $NF_Label1 = GUICtrlCreateLabel("LP " & $DP & " / " & $SS & "  -  Fabr.-Nr.:", 16, 28, 139, 20)
        $NF_Label19 = GUICtrlCreateLabel($FAB, 160, 28, 116, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label48= GUICtrlCreateLabel("Länge Pufferhub [mm]", 16, 52, 158, 20)
        $NF_Label49 = GUICtrlCreateLabel($SS, 224, 52, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label2 = GUICtrlCreateLabel("Länge Hydraulikrohr [mm]", 16, 76, 158, 20)
        $NF_Label20 = GUICtrlCreateLabel($LHR, 224, 76, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label3 = GUICtrlCreateLabel("aufprallende Masse M [kg]", 16, 100, 163, 20)
        $NF_Label21 = GUICtrlCreateLabel($Masse, 224, 100, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label4 = GUICtrlCreateLabel("Vortriebskraft [N]", 16, 124, 104, 20)
        $NF_Label22 = GUICtrlCreateLabel($B0, 224, 124, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label5 = GUICtrlCreateLabel("Nenngeschwindigkeit [m/s]", 16, 148, 165, 20)
        $NF_Label23 = GUICtrlCreateLabel($VNENN, 224, 148, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label6 = GUICtrlCreateLabel("Aufprallgeschwindigkeit [m/s]", 16, 172, 178, 20)
        $NF_Label24 = GUICtrlCreateLabel($VP, 224, 172, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label7 = GUICtrlCreateLabel("Gasdruck [bar]", 16, 196, 93, 20)
        $NF_Label25 = GUICtrlCreateLabel($PBAR, 224, 196, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label8 = GUICtrlCreateLabel("Gasvolumen [l]", 16, 220, 94, 20)
        $NF_Label26 = GUICtrlCreateLabel($VGAS, 224, 220, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label9 = GUICtrlCreateLabel("Drosselbohrungen", 16, 244, 115, 20)
        $NF_Label27 = GUICtrlCreateLabel($NG1 & " Ø " & $DD1 & " mm", 192, 244, 84, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label10 = GUICtrlCreateLabel("Restbohrung", 16, 268, 81, 20)
        $NF_Label28 = GUICtrlCreateLabel($NG2 & " Ø " & $DD2 & " mm", 192, 268, 84, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label11 = GUICtrlCreateLabel("Drosselkurvenexponent", 16, 292, 146, 20)
        $NF_Label29 = GUICtrlCreateLabel($NS, 224, 292, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label12 = GUICtrlCreateLabel("norm. Wegendpunkt", 16, 316, 124, 20)
        $NF_Label30 = GUICtrlCreateLabel($SO, 224, 316, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label13 = GUICtrlCreateLabel("unterer Funktionswert", 16, 340, 129, 20)
        $NF_Label31 = GUICtrlCreateLabel($FU, 224, 340, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label14 = GUICtrlCreateLabel("oberer Funktionswert", 16, 364, 128, 20)
        $NF_Label32 = GUICtrlCreateLabel($FO, 224, 364, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label15 = GUICtrlCreateLabel("Länge Anstiegsflanke [mm]", 16, 388, 166, 20)
        $NF_Label33 = GUICtrlCreateLabel($LA, 224, 388, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label16 = GUICtrlCreateLabel("Anz. Bohrungen in Anstiegsflanke", 16, 412, 201, 20)
        $NF_Label34 = GUICtrlCreateLabel($NA, 224, 412, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label17 = GUICtrlCreateLabel("Länge Zwischenflanke", 16, 436, 137, 20)
        $NF_Label35 = GUICtrlCreateLabel($LZ, 224, 436, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label18 = GUICtrlCreateLabel("Anz. Bohrungen in Zwischenflanke", 16, 460, 205, 20)
        $NF_Label36 = GUICtrlCreateLabel($NZ, 224, 460, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        GUICtrlCreateGroup("", -99, -99, 1, 1)
    
        $NF_Group3 = GUICtrlCreateGroup(" geänderte Pufferdaten ", 290, 4, 160, 482)
        $NF_Inp_SS_2 = GUICtrlCreateInput($SS_2, 300, 50, 52, 24)
        $NF_Inp_LHR_2 = GUICtrlCreateInput($LHR_2, 300, 74, 52, 24)
        $NF_Inp_Masse_2 = GUICtrlCreateInput($Masse_2, 300, 98, 52, 24)
        $NF_Label37 = GUICtrlCreateLabel($B0_2, 300, 124, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label38 = GUICtrlCreateLabel($FU_2, 300, 340, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label39 = GUICtrlCreateLabel($VP_2, 300, 172, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Inp_VNENN_2 = GUICtrlCreateInput($VNENN_2, 300, 146, 52, 24)
        $NF_Label40 = GUICtrlCreateLabel($VGAS_2, 300, 220, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Inp_PBAR_2 = GUICtrlCreateInput($PBAR_2, 300, 194, 52, 24)
        $NF_Inp_NG1_2 = GUICtrlCreateInput($NG1_2, 300, 242, 52, 24)
        $NF_Label41 = GUICtrlCreateLabel("Ø", 358, 244, 11, 19)
        $NF_Inp_DD1_2 = GUICtrlCreateInput($DD1_2, 374, 242, 52, 24)
        $NF_Inp_NG2_2 = GUICtrlCreateInput($NG2_2, 300, 266, 52, 24)
        $NF_Label42 = GUICtrlCreateLabel("Ø", 358, 268, 11, 19)
        $NF_Inp_DD2_2 = GUICtrlCreateInput($DD2_2, 374, 266, 52, 24)
        $NF_Label43 = GUICtrlCreateLabel($FO_2, 300, 364, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Inp_NS_2 = GUICtrlCreateInput($NS_2, 300, 290, 52, 24)
        $NF_Inp_SO_2 = GUICtrlCreateInput($SO_2, 300, 314, 52, 24)
        $NF_Inp_LA_2 = GUICtrlCreateInput($LA_2, 300, 386, 52, 24)
        $NF_Inp_NA_2 = GUICtrlCreateInput($NA_2, 300, 410, 52, 24)
        $NF_Inp_LZ_2 = GUICtrlCreateInput($LZ_2, 300, 434, 52, 24)
        $NF_Inp_NZ_2 = GUICtrlCreateInput($NZ_2, 300, 458, 52, 24)
        GUICtrlCreateGroup("", -99, -99, 1, 1)
    
        $NF_ButtonPufferBerechnen = GUICtrlCreateButton("Puffer berechnen", 16, 604, 120, 25)
        $NF_ButtonKennlinieBerechnen = GUICtrlCreateButton("Kennlinie berechnen", 16, 636, 140, 25)
        $NF_ButtonSpeichern = GUICtrlCreateButton("Speichern", 16, 668, 75, 25)
        $NF_ButtonEnde = GUICtrlCreateButton("Ende", 16, 700, 75, 25)
    
        $NF_Group4 = GUICtrlCreateGroup(" Weg-Kraft-Diagramm ", 456, 4, 1116, 285)    ; 868
        GUICtrlCreateGroup("", -99, -99, 1, 1)
    
        $NF_Group5 = GUICtrlCreateGroup(" Weg-Geschwindigkeit-Diagramm ", 456, 295, 1116, 285)    ; 868
        GUICtrlCreateGroup("", -99, -99, 1, 1)
    
        $NF_Group6 = GUICtrlCreateGroup(" Weg-Verzögerung-Diagramm ", 456, 586, 1116, 285)    ; 868
        GUICtrlCreateGroup("", -99, -99, 1, 1)
    
        $NF_Label44 = GUICtrlCreateLabel("", 16, 520, 52, 20)
        GUICtrlSetBkColor(-1, 0xFF00FF)
        $NF_Label45 = GUICtrlCreateLabel("", 16, 544, 52, 20)
        GUICtrlSetBkColor(-1, 0xFFFF00)
        $NF_Label45 = GUICtrlCreateLabel("", 16, 568, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FF00)
    
        $NF_Label46 = GUICtrlCreateLabel("Kraft-Weg-Diagramm", 88, 520, 122, 20)
        $NF_Label47 = GUICtrlCreateLabel("Geschwindigkeit-Weg-Diagramm", 88, 544, 187, 20)
        $NF_Label50 = GUICtrlCreateLabel("Verzögerung-Weg-Diagramm", 88, 568, 187, 20)
        Global $iPicX = 454, $iPicY = 6, $iPicL = 1118, $iPicH = 866
        Global $idGraphic = GUICtrlCreatePic('', $iPicX, $iPicY, $iPicL, $iPicH)        ; Koordinaten beziehen sich auf die GUI (Hauptfenster) ->- X, Y, Länge, Höhe
    
        $hEnterDummy = GUICtrlCreateDummy()
        Local $aAcc[1][2] = [["{ENTER}", $hEnterDummy]]
        GUISetAccelerators($aAcc, $NF_Form1)
    
        GUISetState(@SW_SHOW)
        #EndRegion ### END Koda GUI section ###
    EndFunc
    
    Func KeZe_KennlinieZeichnen()
        Local $sText_l, $aFileDatas, $aResult[5], $i, $aKW_Dia, $aGW_Dia, $aVW_Dia
        ; Datei einlesen und MAX / MIN für Weg, Geschwindigkeit, Kraft, Verzögerung und Zeit setzen
        If Not _FileReadToArray("LP 211 - FS-Verlauf Temp.txt", $aFileDatas) Then
            MsgBox(4096, "Fehler", "Fehler beim Einlesen der Datei LP 211 - FS-Verlauf Temp.txt in das Array!" & @CRLF & "Fehlercode: " & @error)
            Exit
        EndIf
    
        ;_ArrayDisplay($aFileDatas, "FileDatas")
    
        Local $aDatas[UBound($aFileDatas)][5]
        Local $aKW_Dia[UBound($aFileDatas)][2], $aGW_Dia[UBound($aFileDatas)][2], $aVW_Dia[UBound($aFileDatas)][2], $aPixelKoord[UBound($aFileDatas)][2]
    
        For $i = 1 To UBound($aFileDatas) - 1
            If StringInStr($aFileDatas[$i], ",") > 1 Then
                $aResult = _StringExplode($aFileDatas[$i], ",", 4)
                $aKW_Dia[$i][0] = $aResult[0]
                $aKW_Dia[$i][1] = $aResult[1]
                $aGW_Dia[$i][0] = $aResult[0]
                $aGW_Dia[$i][1] = $aResult[2]
                $aVW_Dia[$i][0] = $aResult[0]
                $aVW_Dia[$i][1] = $aResult[3]
                $aDatas[$i][0] = $aResult[0]
                $aDatas[$i][1] = $aResult[1]
                $aDatas[$i][2] = $aResult[2]
                $aDatas[$i][3] = $aResult[3]
                $aDatas[$i][4] = $aResult[4]
            EndIf
        Next
    
        ; grafische Oberfläche aufbauen
        Local $hBitmap, $hImage, $hBMP, $hPrevImg
        Local $hRedPen, $hGreenPen, $hBluePen, $hMagentaPen, $hYellowPen, $hWhitePen, $hCyanPen, $hBlackPen, $hBlackPenSmall
    
        ; Farbstifte definieren
        $hRedPen = _GDIPlus_PenCreate(0xFFFF0000, 2, 2)
        $hGreenPen = _GDIPlus_PenCreate(0xFF00FF00, 2, 2)
        $hBluePen = _GDIPlus_PenCreate(0xFFFF0000, 2, 2)
        $hYellowPen = _GDIPlus_PenCreate(0xFFFFFF00, 2, 2)
        $hMagentaPen = _GDIPlus_PenCreate(0xFFFF00FF, 2, 2)
        $hWhitePen = _GDIPlus_PenCreate(0xFFFFFFFF, 2, 2)
        $hCyanPen = _GDIPlus_PenCreate(0xFF00FFFF, 2, 2)
        $hBlackPenSmall = _GDIPlus_PenCreate(0xFF000000, 1, 2)
        $hBlackPen = _GDIPlus_PenCreate(0xFF000000, 2, 2)
        $hBrushWhite = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
    
        ; Grafik als Bitmap deklarieren
        $hBitmap = _GDIPlus_BitmapCreateFromScan0($iPicL, $iPicH)
        $hImage = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    
        Local $PixelXKoordDia1 = 83, $PixelYKoordDia1 = 19, $PixelXBreiteDia1 = 1026, $PixelYHoeheDia1 = 236
        Local $PixelXKoordDia2 = 83, $PixelYKoordDia2 = 310, $PixelXBreiteDia2 = 1026, $PixelYHoeheDia2 = 236
        Local $PixelXKoordDia3 = 83, $PixelYKoordDia3 = 571, $PixelXBreiteDia3 = 1026, $PixelYHoeheDia3 = 236
        Local $MinXWert = 0, $MaxXWert = 0, $MinYWert = 0, $MaxYWert = 0, $DeltaXWert = 0, $DeltaYWert = 0, $Delta1X = 0, $Delta1Y = 0
        Local $yScale, $yStep, $xScale, $xStep
    
        _GDIPlus_GraphicsFillRect($hImage, $PixelXKoordDia1-1, $PixelYKoordDia1-3, $PixelXBreiteDia1+2, $PixelYHoeheDia1+4, $hBrushWhite)
        _GDIPlus_GraphicsDrawRect($hImage, $PixelXKoordDia1-1, $PixelYKoordDia1-3, $PixelXBreiteDia1+2, $PixelYHoeheDia1+4, $hBlackPenSmall)
    
        ; Max/Min Werte ermitteln
        For $i = 1 To UBound($aKW_Dia) - 1
            If $aKW_Dia[$i][0] <> "" Then
                If Number($aKW_Dia[$i][0]) > Number($MaxXWert) Then $MaxXWert = $aKW_Dia[$i][0]
                If $i = 1 Then $MinXWert = $MaxXWert
                If Number($aKW_Dia[$i][0]) < Number($MinXWert) Then $MinXWert = $aKW_Dia[$i][0]
            EndIf
            If $aKW_Dia[$i][1] <> "" Then
                If Number($aKW_Dia[$i][1]) > Number($MaxYWert) Then $MaxYWert = $aKW_Dia[$i][1]
                If $i = 1 Then $MinYWert = $MaxYWert
                If Number($aKW_Dia[$i][1]) < Number($MinYWert) Then $MinYWert = $aKW_Dia[$i][1]
            EndIf
        Next
    
        ; Größe in x und y - Richtung ermitteln
        If ($MaxYWert > 0) And ($MinYWert > 0) Then $DeltaYWert = $MaxYWert - $MinYWert
        If ($MaxYWert > 0) And ($MinYWert < 0) Then $DeltaYWert = $MaxYWert - $MinYWert
        If ($MaxYWert < 0) And ($MinYWert < 0) Then $DeltaYWert = $MaxYWert - $MinYWert
        $DeltaXWert = $MaxXWert - $MinXWert        ; z. Bsp. für Y : von 0.0 bis 4.257 --> 4.257 - Aufteilen auf 236 Pixel
                                                            ; z. Bsp. für X : von 0.0 bis 921.7 --> 921.7 - Aufteilen auf 1066 Pixel
        ; Umrechnungsfaktor für Grafikbereich
        $Delta1X = $PixelXBreiteDia1 / $DeltaXWert    ; 1 X-Wert in Pixels --> 1066 / 921.7 = 1.1565
        $Delta1Y = $PixelYHoeheDia1 / $DeltaYWert    ; 1 Y-Wert in Pixels --> 236 / 2.257 = 55.4381
    
        ; tatsächliche Länge & Höhe auf Pixelgrafik umrechnen
        For $i = 1 To UBound($aKW_Dia) - 1
            If StringLen($aKW_Dia[$i][0]) > 0 Then
                $aPixelKoord[0][0] = $i
                $aPixelKoord[$i][0] = $aKW_Dia[$i][0] * $Delta1X     ; 1 Einheit in Y-Richtung auf Pixelgrafik umrechnen
                $aPixelKoord[$i][1] = $aKW_Dia[$i][1] * $Delta1Y     ; 1 Einheit in X-Richtung auf Pixelgrafik umrechnen
            EndIf
        Next
        ;_ArrayDisplay($aKW_Dia, "aKW_Dia")
    
        ; Koordinaten auf Basispunkt 43/19 und umgekehrten Y-Werten transponieren
        For $i = 1 To UBound($aKW_Dia) - 1
            If StringLen($aPixelKoord[$i][0]) > 0 Then
                $aPixelKoord[$i][0] = $aPixelKoord[$i][0] + $PixelXKoordDia1
                $aPixelKoord[$i][1] = $PixelYKoordDia1 + $PixelYHoeheDia1 - $aPixelKoord[$i][1]
            EndIf
        Next
        ;_ArrayDisplay($aPixelKoord, "aPixelKoord")
    
        _GDIPlus_GraphicsDrawCurve($hImage, $aPixelKoord, $hBlackPenSmall)
    
        $yScale = 0
        Switch $Delta1Y
            Case 0 To 0.00099999999            ; 0 ... 0.00099999999 --> Werte liegen bis 236000
                $yStep = 1000
            Case 0.001 To 0.0099999999        ; 0 ... 0.0099999999 --> Werte liegen bis 23600
                $yStep = 1000
            Case 0.01 To 0.099999999        ; 0 ... 0.0099999999 --> Werte liegen bis 2360
                $yStep = 100
            Case 0.1 To 0.999999999            ; 0 ... 0.0099999999 --> Werte liegen bis 236
                $yStep = 10
            Case 1 To 30
                $yStep = 1
            Case 31 To 60
                $yStep = 0.5
            Case 61 To 120
                $yStep = 0.25
            Case 121 To 240
                $yStep = 0.1
        EndSwitch
    
        For $i = 0 To 236 Step ($Delta1Y * $yStep)
            _GDIPlus_GraphicsDrawLine($hImage, 83-9, 19+236-$i, 83-1, 19+236-$i, $hBlackPenSmall)
            ; _GDIPlus_GraphicsDrawLine($hImage, $PixelXKoordDia1 - 9, $PixelYKoordDia1 + $PixelYHoeheDia1 - $i, $PixelXKoordDia1 - 1, $PixelYKoordDia1 + $PixelYHoeheDia1 - $i, $hBlackPenSmall)
            $sText_l = StringFormat('%.3f', $yScale)
            ; MsgBox(0, "Info", $sText_l)
            _GDIPlus_GraphicsDrawString($hImage, $sText_l, 83-36, 19+236-$i-8, "Arial Narrow", 8)
            ; _GDIPlus_GraphicsDrawString($hImage, $sText_l, $PixelXKoordDia1 - 36, $PixelYKoordDia1 + $PixelYHoeheDia1 - $i - 8, "Arial Narrow", 8)
            $yScale = $yScale + $yStep
        Next
    
        ; _WriteRotateText($hImage, "Kraft [N]", 10, 120, 90, 10, 100, 1, "Arial", -1, -1)
        ; _WriteRotateText($GUI, $Text, $X, $Y, $Degree, $Size, $Weight), $type, $readFont, $col, $bkcol)
        _GDIPlus_GraphicsDrawString($hImage, "Kraft [N]", 83-76, 19+100, "Arial", 10, 2)
    
        _GDIPlus_GraphicsFillRect($hImage, 82, 307, 1028, 240, $hBrushWhite)        ; von 43/307 bis 1067/239 --> 1025/223 Pixel ab 43/307
        _GDIPlus_GraphicsDrawRect($hImage, 82, 307, 1028, 240, $hBlackPenSmall)    ; von 43/307 bis 1067/239 --> 1025/223 Pixel ab 43/307
        _GDIPlus_GraphicsFillRect($hImage, 82, 598, 1028, 240, $hBrushWhite)        ; von 43/598 bis 1067/239 --> 1025/223 Pixel ab 43/598
        _GDIPlus_GraphicsDrawRect($hImage, 82, 598, 1028, 240, $hBlackPenSmall)    ; von 43/598 bis 1067/239 --> 1025/223 Pixel ab 43/598
    
        _GDIPlus_GraphicsSetInterpolationMode($hImage, 0)
        ;_GDIPlus_GraphicsSetSmoothingMode($hImage, 2)
        ;$hPen = _GDIPlus_PenCreate(0xFF0000FF, 1)
        ;_GDIPlus_GraphicsDrawCurve($hImage, $aPoints, $hPen)
        $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
        $hPrevImg = GUICtrlSendMsg($idGraphic, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP)
        MsgBox(0, "Info", "Fertig !")
    
    EndFunc
    
    Func KennlinieZeichnen()
        ; Aufbau Fenster
        KeZe_Gui()
        FelderAnzeigen_NF()
    
        ;_SetGraphic($idGraphic)
    
        While 1
            $nMsg_NF = GUIGetMsg()
    
            Switch $nMsg_NF
    
                Case $GUI_EVENT_CLOSE
                    ProgrammEnde_NF()
                    ExitLoop
    
                Case $NF_ButtonSpeichern
                    ; Speichern()
    
                Case $NF_ButtonEnde
                    ProgrammEnde_NF()
                    ExitLoop
    
                Case $NF_ButtonPufferBerechnen
                    ; KeZe_PufferBerechnen()
    
                Case $NF_ButtonKennlinieBerechnen
                    ; KeZe_KennlinieBerechnen()
                    KeZe_KennlinieZeichnen()
    
                Case $hEnterDummy
                    ControlSend($NF_Form1, "", "", "{TAB}")
    
            EndSwitch
        WEnd
        ; Auslegungsdaten des Puffers anzeigen
        ; variablen Pufferwerte ermitteln
        ; Kennlinie berechnen
        ; Grafik anzeigen
    EndFunc
    
    Func ProgrammEnde_NF()
        ;_GDIPlus_PenDispose($hPenBorder)
        ;_GDIPlus_BrushDispose($hBrushBlue)
        ;_GDIPlus_BitmapDispose($hGraphicsBMP)
        ;_GDIPlus_GraphicsDispose($hBuffer)
        ;_GDIPlus_GraphicsDispose($hGraphics)
        _GDIPlus_Shutdown()
    
        GUISetState(@SW_ENABLE, $NF_Form1)
        GUISetState(@SW_SHOW, $NF_Form1)
        GUIDelete($NF_Form1)
        $nMsg_HF = 0
    
        ; Hauptfenster wieder aktivieren
        GUISetState(@SW_SHOW, $HF_Form1)
        GUISetState(@SW_ENABLE, $HF_Form1)
    EndFunc
    
    Func i_ZahlKomma($sZahl)
        Return StringReplace($sZahl, ".", ",")
    EndFunc
    
    ;==================================================================================================
    ; Function Name: _WriteRotateText($hWnd, $sWrite, $iX, $iY, $iDeg, $iSize [, $iWeight=400 _
    ; [, $iType=1 [, $sFont=-1 [, $iCol=-1 [, $iBkCol=-1 [,$bRedraw=True]]]]]])
    ; Description: Schreibt einen Text mit bestimmtem Winkel in das angegebene Fenster
    ; Parameter(s): $hWnd Handle des Fensters
    ; $sWrite der zu schreibende Text
    ; $iX x-Position auf dem Fenster
    ; $iY y-Position auf dem Fenster
    ; $iDeg Rotationswinkel des Textes
    ; $iSize Höhe des Textes
    ; optional: $iWeight Fontbreite 0 - 1000 (Standard 400)
    ; optional: $iType Fonttyp 1=normal (Standard); 2=Italic; 4=Underline; 8=StrikeOut
    ; 1 oder 2 können mit 4 und 8 kombiniert werden (5;9 od. 6;10)
    ; optional: $sFont Fontname -1=Font der Form (Standard)
    ; optional: $iCol Fontfarbe -1=schwarz (Standard)
    ; optional: $iBkCol Hintergrundfarbe -1=Hintergrundfarbe des Fensters (Standard)
    ; optional: $bRedraw True=Fenster vorher neu zeichnen (vorige Beschriftung löschen - Standard)
    ; Requirement(s): #Include <WinAPI.au3>; #include <StructureConstants.au3>; #include <WindowsConstants.au3>
    ;==================================================================================================
    
    Func _WriteRotateText($hWnd, $sWrite, $iX, $iY, $iDeg, $iSize, $iWeight=400, $iType=1, $sFont=-1, $iCol=-1, $iBkCol=-1, $bRedraw=True)
    If $bRedraw Then _WinAPI_RedrawWindow($hWnd)
    Local $tRect = DllStructCreate($tagRECT)
    DllStructSetData($tRect, 'Left', $iX)
    DllStructSetData($tRect, 'Top', $iY)
    Local $rotate = $iDeg *10
    If ($rotate = 900) Or ($rotate = 1800) Or ($rotate = 2700) Then $rotate += 1
    Local $RotateMe = DllStructCreate($tagLOGFONT)
    DllStructSetData($RotateMe, 'Escapement', $rotate)
    DllStructSetData($RotateMe, 'Height', ($iSize * -20)/_WinAPI_TwipsPerPixelY())
    If $iWeight <> 400 Then DllStructSetData($RotateMe, 'Weight', $iWeight)
    If BitAND($iType, 2) Then DllStructSetData($RotateMe, 'Italic', True)
    If BitAND($iType, 4) Then DllStructSetData($RotateMe, 'Underline', True)
    If BitAND($iType, 8) Then DllStructSetData($RotateMe, 'StrikeOut', True)
    If $sFont <> -1 Then DllStructSetData($RotateMe, 'FaceName', $sFont)
    Local $rFont = _WinAPI_CreateFontIndirect($RotateMe)
    Local $hDC = _WinAPI_GetDC($hWnd)
    If $iCol <> -1 Then _WinAPI_SetTextColor($hDC, $iCol)
    If $iBkCol <> -1 Then _WinAPI_SetBkColor($hDC, $iBkCol)
    _WinAPI_SelectObject($hdc, $rFont)
    _WinAPI_DrawText($hDC, $sWrite, $tRect, BitOR($DT_NOCLIP,$DT_NOPREFIX))
    _WinAPI_ReleaseDC($hWnd, $hDC)
    EndFunc ;==>_WriteRotateText
    Alles anzeigen
  • _GDIPlus_GraphicsDrawCurve ohne 'Abrundungen'

    • Schmunke
    • 2. Februar 2020 um 14:53

    ich habe ein weiteres Problem ...

    mit dem Befehl _GDIPlus_GraphicsDrawString kann Text auch vertikal angezeigt werden.

    Ich möchte den Text aber um 90 Grad gedreht haben ... aber eben in die andere Richtung !

    Die Zeile 385 führt den _GDIPlus_GraphicsDrawString und schreibt den Text "Kraft [N]".

    Nur müßte der Text jetzt noch um 180° gedreht werden. Leider gibt das die Funktion nicht her.

    Es gab dazu von BugFix eine Funktion : Link

    Mit dieser Funktion könnte ich das ja auch machen.

    Leider bekomme ich das ganze nicht in meiner GUI integriert (bin zu doof) ... irgendwo mach ich da was falsch.

    Wie muss ich das anpassen ? Ich denke, es muss in die Bitmap rein ... aber wie ?

    Oder kann ich das doch mit einem der _GDIPlus_Graphics... umsetzen ? ... mit welchem ?

    Danke

    C
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <WinAPISys.au3>
    #include <Array.au3>
    #include <Excel.au3>
    #include <GuiListView.au3>
    #include <File.au3>
    #include <String.au3>
    
    ; Hauptfenster
    Global $HF_Form1, $HF_Group2, $HF_Group3, $HF_Group4, $HF_Group5, $HF_Group6, $HF_Group7, $HF_Group8, $HF_Group9, $HF_Radio1, $HF_Radio2
    Global $HF_Button1, $HF_Button2, $HF_Button3, $HF_Button4, $HF_Button5, $HF_Button6, $HF_Button7, $HF_Button8
    Global $HF_Inp_DP, $HF_Inp_SS, $HF_Inp_LHR, $HF_Inp_LMR, $HF_Inp_Masse, $HF_Inp_VNENN, $HF_Inp_FAB, $HF_Inp_BEMERK, $HF_Inp_PBAR, $HF_Inp_XD
    Global $HF_Inp_DD1, $HF_Inp_NG1, $HF_Inp_DD2, $HF_Inp_NG2, $HF_Inp_DD3, $HF_Inp_NG3, $HF_Inp_DD4, $HF_Inp_NG4, $HF_Inp_NS, $HF_Inp_SO, $HF_Inp_LA
    Global $HF_Inp_NA, $HF_Inp_LZ, $HF_Inp_NZ
    Global $HF_Label1, $HF_Label2, $HF_Label3, $HF_Label4, $HF_Label5, $HF_Label6, $HF_Label7, $HF_Label8, $HF_Label9, $HF_Label10, $HF_Label11, $HF_Label12
    Global $HF_Label13, $HF_Label14, $HF_Label15, $HF_Label16, $HF_Label17, $HF_Label18, $HF_Label19, $HF_Label20, $HF_Label21, $HF_Label22, $HF_Label23
    Global $HF_Label24, $HF_Label25, $HF_Label26, $HF_Label27, $HF_Label28, $HF_Label29, $HF_Label30, $HF_Label31, $HF_Label32, $HF_Label33, $HF_Label34
    Global $HF_Label35, $HF_Label36, $HF_Label37, $HF_Label38, $HF_Label39, $HF_Label40, $HF_Label41, $HF_Label42, $HF_Label43, $HF_Label44, $HF_Label45
    Global $HF_Label46, $HF_Label47, $HF_Label48, $HF_Label49, $HF_Label50, $HF_Label51, $HF_Label52, $HF_Label53, $HF_Label54, $HF_Label55
    
    ; Grafikfenster
    Global $NF_Form1, $NF_Group1, $NF_Group2, $NF_Group3, $NF_Group4, $NF_Group5, $NF_Group6
    Global $NF_ButtonSpeichern, $NF_ButtonEnde, $NF_ButtonPufferBerechnen, $NF_ButtonKennlinieBerechnen
    Global $NF_Inp_SS_2, $NF_Inp_LHR_2, $NF_Inp_Masse_2, $NF_Inp_VNENN_2, $NF_Inp_PBAR_2, $NF_Inp_DD1_2, $NF_Inp_NG1_2, $NF_Inp_DD2_2, $NF_Inp_NG2_2, $NF_Inp_NS_2, $NF_Inp_SO_2
    Global $NF_Inp_LA_2, $NF_Inp_NA_2, $NF_Inp_LZ_2, $NF_Inp_NZ_2
    Global $NF_Label1, $NF_Label2, $NF_Label3, $NF_Label4, $NF_Label5, $NF_Label6, $NF_Label7, $NF_Label8, $NF_Label9, $NF_Label10, $NF_Label11, $NF_Label12
    Global $NF_Label13, $NF_Label14, $NF_Label15, $NF_Label16, $NF_Label17, $NF_Label18, $NF_Label19, $NF_Label20, $NF_Label21, $NF_Label22, $NF_Label23
    Global $NF_Label24, $NF_Label25, $NF_Label26, $NF_Label27, $NF_Label28, $NF_Label29, $NF_Label30, $NF_Label31, $NF_Label32, $NF_Label33, $NF_Label34
    Global $NF_Label35, $NF_Label36, $NF_Label37, $NF_Label38, $NF_Label39, $NF_Label40, $NF_Label41, $NF_Label42, $NF_Label43, $NF_Label44, $NF_Label45
    Global $NF_Label46, $NF_Label47, $NF_Label48, $NF_Label49, $NF_Label50
    
    Global $sLeer = "                                                                      "
    Global $aDB, $sSelected = "", $boDEBUG = False
    
    Const $Pi4 = 0.7853981633975
    Const $G0 = 9.81            ; Erdbeschleunigung
    Const $RHO = 890            ; Öldichte 890 kg/m3 (Liste mit verschiedenen Dichten ?)
    Const $NPOL = 1.35        ; Polytropenexponent (wovon abhängig ?)
    Const $ZETA = 1.55        ; Drosselbeiwert     (woher kommt der ? was bedeutet er ?)
    Const $ETA = 0.95            ; mech. Wirkungsgrad (temperaturabhängig ?)
    Const $K = 1.25            ; Kurvenformfaktor   (woher kommt der ? was bedeutet er ?)
    Const $VFAKT = 1.15        ; Aufprallgeschwindigkeit = 115% der Nenngeschwindigkeit nach EN 81 (wird bezweifelt !)
    Const $EERSATZ = 1515    ; Ersatz E-Modul in N/mm2
    Const $sVersion = "Version 3.0.0 vom 19.12.2019"
    Const $DATEINAME = "LP 211 - FS-Verlauf.txt"
    Const $sDatenbank = "Liftpuffer Typ LP.xlsx"
    
    Dim $hFile, $boBerechnen, $boSpeichern, $sDummy, $nMsg_HF, $nMsg_NF, $sText, $DKZ, $sBOBI
    Dim $sDatum, $DP, $SS, $SM, $LHR, $LMR, $D1, $A1, $A2, $D2, $D3, $DKS, $COFF, $CHR, $V0KOPF, $HGAS
    Dim $XI, $XI2, $XD, $XDNEU, $X, $SX, $SO, $SA, $SZ, $PRJN, $XPR, $DXPR, $VPXP, $VPX, $FPX1P, $FPX1, $AXIP, $AXI, $TP, $T
    Dim $ADX, $ADU, $S, $DAD, $SX, $NS, $ADO, $LA, $ADA, $LZ, $ADZ, $P1X, $ZRA, $P2X, $V0, $AKS, $P0, $FRANF, $FRUECK, $AMITTLS, $AMITTLT
    Dim $A1, $FC, $CON, $FPX1, $FPX2, $FVX, $B0, $B1, $B2, $DFP, $FPMAXI, $XFPMAX, $XFPMAXI, $Masse, $AMAX, $XAMAX, $EUM, $VPX2Q, $VPX2
    Dim $VP, $VNENN, $FAB, $BEMERK, $EKIN, $EPOT, $EGES, $FPMAX, $PBAR, $P0, $FDYN, $EKINX1, $ANSTFL, $XSCHWING, $SCHWING, $VGAS
    Dim $SYSTEM, $ADERF, $DDERF, $NGERF, $NG, $DD, $DD1, $NG1, $AD1, $DD2, $NG2, $AD2, $ADVOR, $ADPRO
    Dim $NA, $NZ, $NEUXD, $FU, $FO, $NR, $NE
    
    Dim $SS_2, $LHR_2, $Masse_2, $VNENN_2, $PBAR_2, $DD1_2, $NG1_2, $DD2_2, $NG2_2, $NS_2, $SO_2, $LA_2, $NA_2, $LZ_2, $NZ_2, $B0_2, $B1_2, $B2_2, $VP_2, $VGAS_2, $FU_2, $FO_2
    Dim $ADVOR_2, $EGES_2, $FPMAX_2, $SM_2, $D1_2, $D2_2, $D3_2, $A1_2, $A2_2, $AKS_2, $DKS_2, $COFF_2, $CHR_2, $V0KOPF_2, $HGAS_2, $PRJN_2, $DXPR_2, $P2X_2, $XFPMAX_2, $XAMAX_2
    Dim $CON_2, $EKIN_2, $EPOT_2, $EGES_2, $FPMAX_2, $P0_2, $FDYN_2, $XD_2, $SCHWING_2, $VFAKT_2, $AD1_2, $NG_2, $NR_2, $XI_2, $FPX2_2, $XSCHWING_2, $FPMAX_2, $AMAX_2, $FRUECK_2
    Dim $Min_XI, $Max_XI, $Min_VPXP, $Max_VPXP, $Min_FPX1P, $Max_FPX1P, $Min_AXIP, $Max_AXIP, $Min_TP, $Max_TP, $DP_2, $AD2_2, $EKINX1_2
    Dim $SO_2, $SZ_2, $SA_2, $XPR_2, $VPXP_2, $FPX1P_2, $AXIP_2, $TP_2, $ADU_2, $DAD_2, $ADO_2, $ADA_2, $ADZ_2
    Dim $ZRA_2, $V0_2, $AMAX_2, $EUM_2, $VPX_2, $FPX1_2, $AXI_2, $T_2, $ANSTFL_2
    
    Dim $hEnterDummy
    
    KennlinieZeichnen()
    
    Func FelderAnzeigen_NF()
        ; Daten des aktuellen Puffers
        GUICtrlSetData($NF_Label19, i_ZahlKomma($FAB))
        GUICtrlSetData($NF_Label49, i_ZahlKomma($SS))
        GUICtrlSetData($NF_Label20, i_ZahlKomma($LHR))
        GUICtrlSetData($NF_Label21, i_ZahlKomma($Masse))
        GUICtrlSetData($NF_Label22, i_ZahlKomma($B0))
        GUICtrlSetData($NF_Label23, i_ZahlKomma($VNENN))
        GUICtrlSetData($NF_Label24, i_ZahlKomma($VP))
        GUICtrlSetData($NF_Label25, i_ZahlKomma($PBAR))
        GUICtrlSetData($NF_Label26, i_ZahlKomma($VGAS))
        GUICtrlSetData($NF_Label27, $NG1 & " Ø " & i_ZahlKomma($DD1) & " mm")
        GUICtrlSetData($NF_Label28, $NG2 & " Ø " & i_ZahlKomma($DD2) & " mm")
        GUICtrlSetData($NF_Label29, i_ZahlKomma($NS))
        GUICtrlSetData($NF_Label30, i_ZahlKomma($SO))
        GUICtrlSetData($NF_Label31, i_ZahlKomma($FU))
        GUICtrlSetData($NF_Label32, i_ZahlKomma($FO))
        GUICtrlSetData($NF_Label33, i_ZahlKomma($LA))
        GUICtrlSetData($NF_Label34, i_ZahlKomma($NA))
        GUICtrlSetData($NF_Label35, i_ZahlKomma($LZ))
        GUICtrlSetData($NF_Label36, i_ZahlKomma($NZ))
    
        ; veränderbare Daten des Puffers
        GUICtrlSetData($NF_Inp_SS_2, $SS_2)
        GUICtrlSetData($NF_Inp_LHR_2, $LHR_2)
        GUICtrlSetData($NF_Inp_Masse_2, $Masse_2)
        GUICtrlSetData($NF_Label37, i_ZahlKomma($B0_2))
        GUICtrlSetData($NF_Label38, i_ZahlKomma($FU_2))
        GUICtrlSetData($NF_Label39, i_ZahlKomma($VP_2))
        GUICtrlSetData($NF_Inp_VNENN_2, i_ZahlKomma($VNENN_2))
        GUICtrlSetData($NF_Label40, i_ZahlKomma($VGAS_2))
        GUICtrlSetData($NF_Inp_PBAR_2, i_ZahlKomma($PBAR_2))
        GUICtrlSetData($NF_Inp_NG1_2, $NG1_2)
        GUICtrlSetData($NF_Inp_DD1_2, i_ZahlKomma($DD1_2))
        GUICtrlSetData($NF_Inp_NG2_2, $NG2_2)
        GUICtrlSetData($NF_Inp_DD2_2, i_ZahlKomma($DD2_2))
        GUICtrlSetData($NF_Label43, i_ZahlKomma($FO_2))
        GUICtrlSetData($NF_Inp_NS_2, i_ZahlKomma($NS_2))
        GUICtrlSetData($NF_Inp_SO_2, i_ZahlKomma($SO_2))
        GUICtrlSetData($NF_Inp_LA_2, i_ZahlKomma($LA_2))
        GUICtrlSetData($NF_Inp_NA_2, i_ZahlKomma($NA_2))
        GUICtrlSetData($NF_Inp_LZ_2, i_ZahlKomma($LZ_2))
        GUICtrlSetData($NF_Inp_NZ_2, i_ZahlKomma($NZ_2))
    EndFunc
    
    Func KeZe_Gui()
        _GDIPlus_Startup()
    
        #Region ### START Koda GUI section ### Form=c:\program files (x86)\autoit3\scite\koda\forms\lp nebenfenster.kxf
        $NF_Form1 = GUICreate("Liftpuffer - Testing", 1580, 880, -1, -1)
        GUISetFont(10, 400, 0, "MS Sans Serif")
        $NF_Group2 = GUICtrlCreateGroup(" aktuellen Pufferdaten ", 8, 4, 276, 482)
        $NF_Label1 = GUICtrlCreateLabel("LP " & $DP & " / " & $SS & "  -  Fabr.-Nr.:", 16, 28, 139, 20)
        $NF_Label19 = GUICtrlCreateLabel($FAB, 160, 28, 116, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label48= GUICtrlCreateLabel("Länge Pufferhub [mm]", 16, 52, 158, 20)
        $NF_Label49 = GUICtrlCreateLabel($SS, 224, 52, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label2 = GUICtrlCreateLabel("Länge Hydraulikrohr [mm]", 16, 76, 158, 20)
        $NF_Label20 = GUICtrlCreateLabel($LHR, 224, 76, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label3 = GUICtrlCreateLabel("aufprallende Masse M [kg]", 16, 100, 163, 20)
        $NF_Label21 = GUICtrlCreateLabel($Masse, 224, 100, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label4 = GUICtrlCreateLabel("Vortriebskraft [N]", 16, 124, 104, 20)
        $NF_Label22 = GUICtrlCreateLabel($B0, 224, 124, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label5 = GUICtrlCreateLabel("Nenngeschwindigkeit [m/s]", 16, 148, 165, 20)
        $NF_Label23 = GUICtrlCreateLabel($VNENN, 224, 148, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label6 = GUICtrlCreateLabel("Aufprallgeschwindigkeit [m/s]", 16, 172, 178, 20)
        $NF_Label24 = GUICtrlCreateLabel($VP, 224, 172, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label7 = GUICtrlCreateLabel("Gasdruck [bar]", 16, 196, 93, 20)
        $NF_Label25 = GUICtrlCreateLabel($PBAR, 224, 196, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label8 = GUICtrlCreateLabel("Gasvolumen [l]", 16, 220, 94, 20)
        $NF_Label26 = GUICtrlCreateLabel($VGAS, 224, 220, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label9 = GUICtrlCreateLabel("Drosselbohrungen", 16, 244, 115, 20)
        $NF_Label27 = GUICtrlCreateLabel($NG1 & " Ø " & $DD1 & " mm", 192, 244, 84, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label10 = GUICtrlCreateLabel("Restbohrung", 16, 268, 81, 20)
        $NF_Label28 = GUICtrlCreateLabel($NG2 & " Ø " & $DD2 & " mm", 192, 268, 84, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label11 = GUICtrlCreateLabel("Drosselkurvenexponent", 16, 292, 146, 20)
        $NF_Label29 = GUICtrlCreateLabel($NS, 224, 292, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label12 = GUICtrlCreateLabel("norm. Wegendpunkt", 16, 316, 124, 20)
        $NF_Label30 = GUICtrlCreateLabel($SO, 224, 316, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label13 = GUICtrlCreateLabel("unterer Funktionswert", 16, 340, 129, 20)
        $NF_Label31 = GUICtrlCreateLabel($FU, 224, 340, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label14 = GUICtrlCreateLabel("oberer Funktionswert", 16, 364, 128, 20)
        $NF_Label32 = GUICtrlCreateLabel($FO, 224, 364, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label15 = GUICtrlCreateLabel("Länge Anstiegsflanke [mm]", 16, 388, 166, 20)
        $NF_Label33 = GUICtrlCreateLabel($LA, 224, 388, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label16 = GUICtrlCreateLabel("Anz. Bohrungen in Anstiegsflanke", 16, 412, 201, 20)
        $NF_Label34 = GUICtrlCreateLabel($NA, 224, 412, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label17 = GUICtrlCreateLabel("Länge Zwischenflanke", 16, 436, 137, 20)
        $NF_Label35 = GUICtrlCreateLabel($LZ, 224, 436, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label18 = GUICtrlCreateLabel("Anz. Bohrungen in Zwischenflanke", 16, 460, 205, 20)
        $NF_Label36 = GUICtrlCreateLabel($NZ, 224, 460, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        GUICtrlCreateGroup("", -99, -99, 1, 1)
    
        $NF_Group3 = GUICtrlCreateGroup(" geänderte Pufferdaten ", 290, 4, 160, 482)
        $NF_Inp_SS_2 = GUICtrlCreateInput($SS_2, 300, 50, 52, 24)
        $NF_Inp_LHR_2 = GUICtrlCreateInput($LHR_2, 300, 74, 52, 24)
        $NF_Inp_Masse_2 = GUICtrlCreateInput($Masse_2, 300, 98, 52, 24)
        $NF_Label37 = GUICtrlCreateLabel($B0_2, 300, 124, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label38 = GUICtrlCreateLabel($FU_2, 300, 340, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Label39 = GUICtrlCreateLabel($VP_2, 300, 172, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Inp_VNENN_2 = GUICtrlCreateInput($VNENN_2, 300, 146, 52, 24)
        $NF_Label40 = GUICtrlCreateLabel($VGAS_2, 300, 220, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Inp_PBAR_2 = GUICtrlCreateInput($PBAR_2, 300, 194, 52, 24)
        $NF_Inp_NG1_2 = GUICtrlCreateInput($NG1_2, 300, 242, 52, 24)
        $NF_Label41 = GUICtrlCreateLabel("Ø", 358, 244, 11, 19)
        $NF_Inp_DD1_2 = GUICtrlCreateInput($DD1_2, 374, 242, 52, 24)
        $NF_Inp_NG2_2 = GUICtrlCreateInput($NG2_2, 300, 266, 52, 24)
        $NF_Label42 = GUICtrlCreateLabel("Ø", 358, 268, 11, 19)
        $NF_Inp_DD2_2 = GUICtrlCreateInput($DD2_2, 374, 266, 52, 24)
        $NF_Label43 = GUICtrlCreateLabel($FO_2, 300, 364, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FFFF)
        $NF_Inp_NS_2 = GUICtrlCreateInput($NS_2, 300, 290, 52, 24)
        $NF_Inp_SO_2 = GUICtrlCreateInput($SO_2, 300, 314, 52, 24)
        $NF_Inp_LA_2 = GUICtrlCreateInput($LA_2, 300, 386, 52, 24)
        $NF_Inp_NA_2 = GUICtrlCreateInput($NA_2, 300, 410, 52, 24)
        $NF_Inp_LZ_2 = GUICtrlCreateInput($LZ_2, 300, 434, 52, 24)
        $NF_Inp_NZ_2 = GUICtrlCreateInput($NZ_2, 300, 458, 52, 24)
        GUICtrlCreateGroup("", -99, -99, 1, 1)
    
        $NF_ButtonPufferBerechnen = GUICtrlCreateButton("Puffer berechnen", 16, 604, 120, 25)
        $NF_ButtonKennlinieBerechnen = GUICtrlCreateButton("Kennlinie berechnen", 16, 636, 140, 25)
        $NF_ButtonSpeichern = GUICtrlCreateButton("Speichern", 16, 668, 75, 25)
        $NF_ButtonEnde = GUICtrlCreateButton("Ende", 16, 700, 75, 25)
    
        $NF_Group4 = GUICtrlCreateGroup(" Weg-Kraft-Diagramm ", 456, 4, 1116, 285)    ; 868
        GUICtrlCreateGroup("", -99, -99, 1, 1)
    
        $NF_Group5 = GUICtrlCreateGroup(" Weg-Geschwindigkeit-Diagramm ", 456, 295, 1116, 285)    ; 868
        GUICtrlCreateGroup("", -99, -99, 1, 1)
    
        $NF_Group6 = GUICtrlCreateGroup(" Weg-Verzögerung-Diagramm ", 456, 586, 1116, 285)    ; 868
        GUICtrlCreateGroup("", -99, -99, 1, 1)
    
        $NF_Label44 = GUICtrlCreateLabel("", 16, 520, 52, 20)
        GUICtrlSetBkColor(-1, 0xFF00FF)
        $NF_Label45 = GUICtrlCreateLabel("", 16, 544, 52, 20)
        GUICtrlSetBkColor(-1, 0xFFFF00)
        $NF_Label45 = GUICtrlCreateLabel("", 16, 568, 52, 20)
        GUICtrlSetBkColor(-1, 0x00FF00)
    
        $NF_Label46 = GUICtrlCreateLabel("Kraft-Weg-Diagramm", 88, 520, 122, 20)
        $NF_Label47 = GUICtrlCreateLabel("Geschwindigkeit-Weg-Diagramm", 88, 544, 187, 20)
        $NF_Label50 = GUICtrlCreateLabel("Verzögerung-Weg-Diagramm", 88, 568, 187, 20)
        Global $iPicX = 454, $iPicY = 6, $iPicL = 1118, $iPicH = 866
        Global $idGraphic = GUICtrlCreatePic('', $iPicX, $iPicY, $iPicL, $iPicH)        ; Koordinaten beziehen sich auf die GUI (Hauptfenster) ->- X, Y, Länge, Höhe
    
        $hEnterDummy = GUICtrlCreateDummy()
        Local $aAcc[1][2] = [["{ENTER}", $hEnterDummy]]
        GUISetAccelerators($aAcc, $NF_Form1)
    
        GUISetState(@SW_SHOW)
        #EndRegion ### END Koda GUI section ###
    EndFunc
    
    Func KeZe_KennlinieZeichnen()
        Local $sText_l, $aFileDatas, $aResult[5], $i, $aKW_Dia, $aGW_Dia, $aVW_Dia
        ; Datei einlesen und MAX / MIN für Weg, Geschwindigkeit, Kraft, Verzögerung und Zeit setzen
        If Not _FileReadToArray("LP 211 - FS-Verlauf Temp.txt", $aFileDatas) Then
            MsgBox(4096, "Fehler", "Fehler beim Einlesen der Datei LP 211 - FS-Verlauf Temp.txt in das Array!" & @CRLF & "Fehlercode: " & @error)
            Exit
        EndIf
    
        ;_ArrayDisplay($aFileDatas, "FileDatas")
    
        Local $aDatas[UBound($aFileDatas)][5]
        Local $aKW_Dia[UBound($aFileDatas)][2], $aGW_Dia[UBound($aFileDatas)][2], $aVW_Dia[UBound($aFileDatas)][2], $aPixelKoord[UBound($aFileDatas)][2]
    
        For $i = 1 To UBound($aFileDatas) - 1
            If StringInStr($aFileDatas[$i], ",") > 1 Then
                $aResult = _StringExplode($aFileDatas[$i], ",", 4)
                $aKW_Dia[$i][0] = $aResult[0]
                $aKW_Dia[$i][1] = $aResult[1]
                $aGW_Dia[$i][0] = $aResult[0]
                $aGW_Dia[$i][1] = $aResult[2]
                $aVW_Dia[$i][0] = $aResult[0]
                $aVW_Dia[$i][1] = $aResult[3]
                $aDatas[$i][0] = $aResult[0]
                $aDatas[$i][1] = $aResult[1]
                $aDatas[$i][2] = $aResult[2]
                $aDatas[$i][3] = $aResult[3]
                $aDatas[$i][4] = $aResult[4]
            EndIf
        Next
    
        ; grafische Oberfläche aufbauen
        Local $hBitmap, $hImage, $hBMP, $hPrevImg
        Local $hRedPen, $hGreenPen, $hBluePen, $hMagentaPen, $hYellowPen, $hWhitePen, $hCyanPen, $hBlackPen, $hBlackPenSmall
    
        ; Farbstifte definieren
        $hRedPen = _GDIPlus_PenCreate(0xFFFF0000, 2, 2)
        $hGreenPen = _GDIPlus_PenCreate(0xFF00FF00, 2, 2)
        $hBluePen = _GDIPlus_PenCreate(0xFFFF0000, 2, 2)
        $hYellowPen = _GDIPlus_PenCreate(0xFFFFFF00, 2, 2)
        $hMagentaPen = _GDIPlus_PenCreate(0xFFFF00FF, 2, 2)
        $hWhitePen = _GDIPlus_PenCreate(0xFFFFFFFF, 2, 2)
        $hCyanPen = _GDIPlus_PenCreate(0xFF00FFFF, 2, 2)
        $hBlackPenSmall = _GDIPlus_PenCreate(0xFF000000, 1, 2)
        $hBlackPen = _GDIPlus_PenCreate(0xFF000000, 2, 2)
        $hBrushWhite = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
    
        ; Grafik als Bitmap deklarieren
        $hBitmap = _GDIPlus_BitmapCreateFromScan0($iPicL, $iPicH)
        $hImage = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    
        Local $PixelXKoordDia1 = 83, $PixelYKoordDia1 = 19, $PixelXBreiteDia1 = 1026, $PixelYHoeheDia1 = 236
        Local $PixelXKoordDia2 = 83, $PixelYKoordDia2 = 310, $PixelXBreiteDia2 = 1026, $PixelYHoeheDia2 = 236
        Local $PixelXKoordDia3 = 83, $PixelYKoordDia3 = 571, $PixelXBreiteDia3 = 1026, $PixelYHoeheDia3 = 236
        Local $MinXWert = 0, $MaxXWert = 0, $MinYWert = 0, $MaxYWert = 0, $DeltaXWert = 0, $DeltaYWert = 0, $Delta1X = 0, $Delta1Y = 0
        Local $yScale, $yStep, $xScale, $xStep
    
        _GDIPlus_GraphicsFillRect($hImage, $PixelXKoordDia1-1, $PixelYKoordDia1-3, $PixelXBreiteDia1+2, $PixelYHoeheDia1+4, $hBrushWhite)
        _GDIPlus_GraphicsDrawRect($hImage, $PixelXKoordDia1-1, $PixelYKoordDia1-3, $PixelXBreiteDia1+2, $PixelYHoeheDia1+4, $hBlackPenSmall)
    
        ; Max/Min Werte ermitteln
        For $i = 1 To UBound($aKW_Dia) - 1
            If $aKW_Dia[$i][0] <> "" Then
                If Number($aKW_Dia[$i][0]) > Number($MaxXWert) Then $MaxXWert = $aKW_Dia[$i][0]
                If $i = 1 Then $MinXWert = $MaxXWert
                If Number($aKW_Dia[$i][0]) < Number($MinXWert) Then $MinXWert = $aKW_Dia[$i][0]
            EndIf
            If $aKW_Dia[$i][1] <> "" Then
                If Number($aKW_Dia[$i][1]) > Number($MaxYWert) Then $MaxYWert = $aKW_Dia[$i][1]
                If $i = 1 Then $MinYWert = $MaxYWert
                If Number($aKW_Dia[$i][1]) < Number($MinYWert) Then $MinYWert = $aKW_Dia[$i][1]
            EndIf
        Next
    
        ; Größe in x und y - Richtung ermitteln
        If ($MaxYWert > 0) And ($MinYWert > 0) Then $DeltaYWert = $MaxYWert - $MinYWert
        If ($MaxYWert > 0) And ($MinYWert < 0) Then $DeltaYWert = $MaxYWert - $MinYWert
        If ($MaxYWert < 0) And ($MinYWert < 0) Then $DeltaYWert = $MaxYWert - $MinYWert
        $DeltaXWert = $MaxXWert - $MinXWert        ; z. Bsp. für Y : von 0.0 bis 4.257 --> 4.257 - Aufteilen auf 236 Pixel
                                                            ; z. Bsp. für X : von 0.0 bis 921.7 --> 921.7 - Aufteilen auf 1066 Pixel
        ; Umrechnungsfaktor für Grafikbereich
        $Delta1X = $PixelXBreiteDia1 / $DeltaXWert    ; 1 X-Wert in Pixels --> 1066 / 921.7 = 1.1565
        $Delta1Y = $PixelYHoeheDia1 / $DeltaYWert    ; 1 Y-Wert in Pixels --> 236 / 2.257 = 55.4381
    
        ; tatsächliche Länge & Höhe auf Pixelgrafik umrechnen
        For $i = 1 To UBound($aKW_Dia) - 1
            If StringLen($aKW_Dia[$i][0]) > 0 Then
                $aPixelKoord[0][0] = $i
                $aPixelKoord[$i][0] = $aKW_Dia[$i][0] * $Delta1X     ; 1 Einheit in Y-Richtung auf Pixelgrafik umrechnen
                $aPixelKoord[$i][1] = $aKW_Dia[$i][1] * $Delta1Y     ; 1 Einheit in X-Richtung auf Pixelgrafik umrechnen
            EndIf
        Next
        ;_ArrayDisplay($aKW_Dia, "aKW_Dia")
    
        ; Koordinaten auf Basispunkt 43/19 und umgekehrten Y-Werten transponieren
        For $i = 1 To UBound($aKW_Dia) - 1
            If StringLen($aPixelKoord[$i][0]) > 0 Then
                $aPixelKoord[$i][0] = $aPixelKoord[$i][0] + $PixelXKoordDia1
                $aPixelKoord[$i][1] = $PixelYKoordDia1 + $PixelYHoeheDia1 - $aPixelKoord[$i][1]
            EndIf
        Next
        ;_ArrayDisplay($aPixelKoord, "aPixelKoord")
    
        _GDIPlus_GraphicsDrawCurve($hImage, $aPixelKoord, $hBlackPenSmall)
    
        $yScale = 0
        Switch $Delta1Y
            Case 0 To 0.00099999999            ; 0 ... 0.00099999999 --> Werte liegen bis 236000
                $yStep = 1000
            Case 0.001 To 0.0099999999        ; 0 ... 0.0099999999 --> Werte liegen bis 23600
                $yStep = 1000
            Case 0.01 To 0.099999999        ; 0 ... 0.0099999999 --> Werte liegen bis 2360
                $yStep = 100
            Case 0.1 To 0.999999999            ; 0 ... 0.0099999999 --> Werte liegen bis 236
                $yStep = 10
            Case 1 To 30
                $yStep = 1
            Case 31 To 60
                $yStep = 0.5
            Case 61 To 120
                $yStep = 0.25
            Case 121 To 240
                $yStep = 0.1
        EndSwitch
    
        For $i = 0 To 236 Step ($Delta1Y * $yStep)
            _GDIPlus_GraphicsDrawLine($hImage, 83-9, 19+236-$i, 83-1, 19+236-$i, $hBlackPenSmall)
            ; _GDIPlus_GraphicsDrawLine($hImage, $PixelXKoordDia1 - 9, $PixelYKoordDia1 + $PixelYHoeheDia1 - $i, $PixelXKoordDia1 - 1, $PixelYKoordDia1 + $PixelYHoeheDia1 - $i, $hBlackPenSmall)
            $sText_l = StringFormat('%.3f', $yScale)
            ; MsgBox(0, "Info", $sText_l)
            _GDIPlus_GraphicsDrawString($hImage, $sText_l, 83-36, 19+236-$i-8, "Arial Narrow", 8)
            ; _GDIPlus_GraphicsDrawString($hImage, $sText_l, $PixelXKoordDia1 - 36, $PixelYKoordDia1 + $PixelYHoeheDia1 - $i - 8, "Arial Narrow", 8)
            $yScale = $yScale + $yStep
        Next
    
        ; _WriteRotateText($hImage, "Kraft [N]", 10, 120, 90, 10, 100, 1, "Arial", -1, -1)
        ; _WriteRotateText($GUI, $Text, $X, $Y, $Degree, $Size, $Weight), $type, $readFont, $col, $bkcol)
        _GDIPlus_GraphicsDrawString($hImage, "Kraft [N]", 83-76, 19+100, "Arial", 10, 2)
    
        _GDIPlus_GraphicsFillRect($hImage, 82, 307, 1028, 240, $hBrushWhite)        ; von 43/307 bis 1067/239 --> 1025/223 Pixel ab 43/307
        _GDIPlus_GraphicsDrawRect($hImage, 82, 307, 1028, 240, $hBlackPenSmall)    ; von 43/307 bis 1067/239 --> 1025/223 Pixel ab 43/307
        _GDIPlus_GraphicsFillRect($hImage, 82, 598, 1028, 240, $hBrushWhite)        ; von 43/598 bis 1067/239 --> 1025/223 Pixel ab 43/598
        _GDIPlus_GraphicsDrawRect($hImage, 82, 598, 1028, 240, $hBlackPenSmall)    ; von 43/598 bis 1067/239 --> 1025/223 Pixel ab 43/598
    
        _GDIPlus_GraphicsSetInterpolationMode($hImage, 0)
        ;_GDIPlus_GraphicsSetSmoothingMode($hImage, 2)
        ;$hPen = _GDIPlus_PenCreate(0xFF0000FF, 1)
        ;_GDIPlus_GraphicsDrawCurve($hImage, $aPoints, $hPen)
        $hBMP = _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
        $hPrevImg = GUICtrlSendMsg($idGraphic, $STM_SETIMAGE, $IMAGE_BITMAP, $hBMP)
        MsgBox(0, "Info", "Fertig !")
    
    EndFunc
    
    Func KennlinieZeichnen()
        ; Aufbau Fenster
        KeZe_Gui()
        FelderAnzeigen_NF()
    
        ;_SetGraphic($idGraphic)
    
        While 1
            $nMsg_NF = GUIGetMsg()
    
            Switch $nMsg_NF
    
                Case $GUI_EVENT_CLOSE
                    ProgrammEnde_NF()
                    ExitLoop
    
                Case $NF_ButtonSpeichern
                    ; Speichern()
    
                Case $NF_ButtonEnde
                    ProgrammEnde_NF()
                    ExitLoop
    
                Case $NF_ButtonPufferBerechnen
                    ; KeZe_PufferBerechnen()
    
                Case $NF_ButtonKennlinieBerechnen
                    ; KeZe_KennlinieBerechnen()
                    KeZe_KennlinieZeichnen()
    
                Case $hEnterDummy
                    ControlSend($NF_Form1, "", "", "{TAB}")
    
            EndSwitch
        WEnd
        ; Auslegungsdaten des Puffers anzeigen
        ; variablen Pufferwerte ermitteln
        ; Kennlinie berechnen
        ; Grafik anzeigen
    EndFunc
    
    Func ProgrammEnde_NF()
        ;_GDIPlus_PenDispose($hPenBorder)
        ;_GDIPlus_BrushDispose($hBrushBlue)
        ;_GDIPlus_BitmapDispose($hGraphicsBMP)
        ;_GDIPlus_GraphicsDispose($hBuffer)
        ;_GDIPlus_GraphicsDispose($hGraphics)
        _GDIPlus_Shutdown()
    
        GUISetState(@SW_ENABLE, $NF_Form1)
        GUISetState(@SW_SHOW, $NF_Form1)
        GUIDelete($NF_Form1)
        $nMsg_HF = 0
    
        ; Hauptfenster wieder aktivieren
        GUISetState(@SW_SHOW, $HF_Form1)
        GUISetState(@SW_ENABLE, $HF_Form1)
    EndFunc
    
    Func i_ZahlKomma($sZahl)
        Return StringReplace($sZahl, ".", ",")
    EndFunc
    
    ;==================================================================================================
    ; Function Name: _WriteRotateText($hWnd, $sWrite, $iX, $iY, $iDeg, $iSize [, $iWeight=400 _
    ; [, $iType=1 [, $sFont=-1 [, $iCol=-1 [, $iBkCol=-1 [,$bRedraw=True]]]]]])
    ; Description: Schreibt einen Text mit bestimmtem Winkel in das angegebene Fenster
    ; Parameter(s): $hWnd Handle des Fensters
    ; $sWrite der zu schreibende Text
    ; $iX x-Position auf dem Fenster
    ; $iY y-Position auf dem Fenster
    ; $iDeg Rotationswinkel des Textes
    ; $iSize Höhe des Textes
    ; optional: $iWeight Fontbreite 0 - 1000 (Standard 400)
    ; optional: $iType Fonttyp 1=normal (Standard); 2=Italic; 4=Underline; 8=StrikeOut
    ; 1 oder 2 können mit 4 und 8 kombiniert werden (5;9 od. 6;10)
    ; optional: $sFont Fontname -1=Font der Form (Standard)
    ; optional: $iCol Fontfarbe -1=schwarz (Standard)
    ; optional: $iBkCol Hintergrundfarbe -1=Hintergrundfarbe des Fensters (Standard)
    ; optional: $bRedraw True=Fenster vorher neu zeichnen (vorige Beschriftung löschen - Standard)
    ; Requirement(s): #Include <WinAPI.au3>; #include <StructureConstants.au3>; #include <WindowsConstants.au3>
    ;==================================================================================================
    
    Func _WriteRotateText($hWnd, $sWrite, $iX, $iY, $iDeg, $iSize, $iWeight=400, $iType=1, $sFont=-1, $iCol=-1, $iBkCol=-1, $bRedraw=True)
    If $bRedraw Then _WinAPI_RedrawWindow($hWnd)
    Local $tRect = DllStructCreate($tagRECT)
    DllStructSetData($tRect, 'Left', $iX)
    DllStructSetData($tRect, 'Top', $iY)
    Local $rotate = $iDeg *10
    If ($rotate = 900) Or ($rotate = 1800) Or ($rotate = 2700) Then $rotate += 1
    Local $RotateMe = DllStructCreate($tagLOGFONT)
    DllStructSetData($RotateMe, 'Escapement', $rotate)
    DllStructSetData($RotateMe, 'Height', ($iSize * -20)/_WinAPI_TwipsPerPixelY())
    If $iWeight <> 400 Then DllStructSetData($RotateMe, 'Weight', $iWeight)
    If BitAND($iType, 2) Then DllStructSetData($RotateMe, 'Italic', True)
    If BitAND($iType, 4) Then DllStructSetData($RotateMe, 'Underline', True)
    If BitAND($iType, 8) Then DllStructSetData($RotateMe, 'StrikeOut', True)
    If $sFont <> -1 Then DllStructSetData($RotateMe, 'FaceName', $sFont)
    Local $rFont = _WinAPI_CreateFontIndirect($RotateMe)
    Local $hDC = _WinAPI_GetDC($hWnd)
    If $iCol <> -1 Then _WinAPI_SetTextColor($hDC, $iCol)
    If $iBkCol <> -1 Then _WinAPI_SetBkColor($hDC, $iBkCol)
    _WinAPI_SelectObject($hdc, $rFont)
    _WinAPI_DrawText($hDC, $sWrite, $tRect, BitOR($DT_NOCLIP,$DT_NOPREFIX))
    _WinAPI_ReleaseDC($hWnd, $hDC)
    EndFunc ;==>_WriteRotateText
    Alles anzeigen
  • _GDIPlus_GraphicsDrawCurve ohne 'Abrundungen'

    • Schmunke
    • 1. Februar 2020 um 19:10

    ... ist ja auch 'Stand der Technik' in z.Bsp. CAD-Systemen ...

  • _GDIPlus_GraphicsDrawCurve ohne 'Abrundungen'

    • Schmunke
    • 1. Februar 2020 um 17:57

    ich habe deinen Beitrag gelesen ... die Korrektur dazu steht in den letzten beiden Zeilen meines vorletzten Posts ...

    Aber Danke für deine sehr sehr ausführliche Darstellung. Ich habs verstanden ...

    ... und ja - du hattest Recht.

    Mein Fehler war, das ich tatsächlich davon ausgegangen bin, das man den Mittelpunkt des Kreises angibt ...

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™