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

Beiträge von name22

  • Werte aus SQLite in eine ListView Tabelle integrieren

    • name22
    • 15. Januar 2014 um 20:52

    Laut Hilfe spuckt SQLite_Exec im ersten Callback die Namen der Spalten aus. Man kann auch einfach eine andere Funktion verwenden:

    Spoiler anzeigen
    [autoit]

    #include <SQLite.au3>
    #include <SQLite.dll.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <MsgBoxConstants.au3>
    #include<Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Local $listview, $aResult, $iRows, $iColumns, $iRval, $sItem

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("listview items", 220, 250, 100, 200, -1, $WS_EX_ACCEPTFILES)
    $listview = GUICtrlCreateListView("col1|col2|col3", 10, 10, 200, 150)
    GUICtrlCreateInput("", 20, 200, 150)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Startup()
    _SQLite_Open()
    _SQLite_Exec(-1, "Create table tblTest (a,b,c);" & _
    "Insert into tblTest values (1,2,3);" & _
    "Insert into tblTest values (Null,5,6);")

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_GetTable2d(-1, "Select * From tblTest", $aResult, $iRows, $iColumns)

    [/autoit] [autoit][/autoit] [autoit]

    For $iR = 1 To $iRows
    $sItem = ""
    For $iC = 0 To $iColumns - 1
    $sItem &= $aResult[$iR][$iC] & "|"
    Next
    GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $listview)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Close()
    _SQLite_Shutdown()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Hotkeyset mit Unicode/ASCII-Nummern

    • name22
    • 15. Januar 2014 um 18:10

    Die Funktion richtet sich nur nach physisch vorhandenen Tasten. Du müsstest also die Kombination (z.B. Strg+Alt+Q für @) angeben.

  • Werte aus SQLite in eine ListView Tabelle integrieren

    • name22
    • 15. Januar 2014 um 15:56

    Ich gehe mal davon aus, dass das so aussehen soll:

    Spoiler anzeigen
    [autoit]

    #include <SQLite.au3>
    #include <SQLite.dll.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <MsgBoxConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Local $hQuery, $aRow, $listview, $button, $item1, $item2, $item3, $msg

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("listview items", 220, 250, 100, 200, -1, $WS_EX_ACCEPTFILES)
    $listview = GUICtrlCreateListView("col1|col2|col3", 10, 10, 200, 150)
    GUICtrlCreateInput("", 20, 200, 150)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Startup()
    _SQLite_Open()
    _SQLite_Exec(-1, "Create table tblTest (a,b,c);" & _
    "Insert into tblTest values (1,2,3);" & _
    "Insert into tblTest values (Null,5,6);")
    Local $d = _SQLite_Exec(-1, "Select * From tblTest", "_cb") ; _cb will be called for each row

    [/autoit] [autoit][/autoit] [autoit]

    Func _cb($aRow)
    Local $sItem
    For $s In $aRow
    $sItem &= $s & "|"
    Next
    GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $listview)
    EndFunc ;==>_cb

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Close()
    _SQLite_Shutdown()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch
    WEnd

    [/autoit]


    Du hast für jeden einzelnen Eintrag einer Reihe (bzw. jeden Durchgang der For Schleife) ein ListViewItem erstellt, also eine Zeile.

  • Softes scrollen von bildern in der GUI. - nicht möglich ?

    • name22
    • 10. Januar 2014 um 00:14

    Ich habe noch eine Variante ohne UDF Funktionen geschrieben:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $gui, $guiPos, $pic, $picPos

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("My GUI picture", 350, 300, -1, -1, Default, $WS_EX_COMPOSITED)
    $gui = GUISetBkColor(0x000000)
    $pic = GUICtrlCreatePic("test.jpg", 50, 50, 200, 125)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    AdlibRegister("_MovePic", 10)

    [/autoit] [autoit][/autoit] [autoit]

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _MovePic()
    Local Static $picPos = 0
    $picPos += 1
    If $picPos > 199 Then $picPos = 0
    GUICtrlSetPos($pic, 50, 59 + $picPos, 200, 125)
    EndFunc

    [/autoit]


    Edit: Ich habe erst jetzt bemerkt, dass WhiteLion Ausschnitte von riesigen Bildern anzeigen lassen will. Dafür ist das hier natürlich nicht geeignet, also würde ich dir auch GDI+ empfehlen. ^^

  • Wo bekommt man *.au3 zu downloaden?

    • name22
    • 9. Januar 2014 um 14:53

    Die MsgBoxConstants.au3 existiert mindestens seit dem Stablerelease im Dezember (3.3.10.0). Bei älteren Versionene (z.B. 3.3.8.1) sind die Konstanten auch enthalten. Allerdings waren sie vorher in der Datei "Constants.au3" und wurden wohl vor kurzem in eine eigene Datei ausgegliedert.
    Eine UDF Sammlung halte ich für problematisch. Es gibt zu viele UDFs die aktiv benutzt werden und alle für verschiedene AutoItversionen geschrieben wurden. Außerdem dürfen nicht einfach alle Dateien ohne Erlaubnis des Autors irgendwo anders gehostet werden.

  • Wo bekommt man *.au3 zu downloaden?

    • name22
    • 9. Januar 2014 um 14:18

    Wo genau liegt denn jetzt das Problem? Die Datei "MsgBoxConstants.au3" ist Teil der AutoIt Installation, wie jede andere in Hilfebeispielen verwendete UDF.
    Ich habe auch die neueste AutoIt Version installiert und bei mir liegt diese Datei im Ordner "Include" im Installationsverzeichnis, also da wo sie sein soll. Im neuesten Installer ist die Datei auch zu finden. Wie kommst du denn darauf, dass die Datei bei dir fehlt? Hast du etwa eine Fehlermeldung bei der Ausführung des Scripts bekommen von der du uns noch nichts erzählt hast? Vorhandene #include Dateien lassen sich übrigens mit der Tastenkombination Alt+I in Scite öffnen.

    Bis jetzt habe ich übrigens jede UDF, die nicht Teil des Standardpakets ist, über eine kurze Google Suchanfrage gefunden.

  • Bildübereinstimmung überprüfen

    • name22
    • 6. Januar 2014 um 16:47

    PNG ist übrigens nicht qualitativ hochwertiger als BMP, sondern einfach nur effizienter und fortgeschrittener. PNG hat eine verlustfreie Komprimierung, somit gehen also auch hier keineder originalen Bilddaten verloren. Außerdem unterstützt PNG Transparenz über den Alphakanal.
    BMP hat dafür den Vorteil, dass es wohl das simpelste Bildformat ist, wie Andy bereits erklärt hat.

  • Animierte prozedurale Landschaft aus impliziten Gleichungen

    • name22
    • 3. Januar 2014 um 16:59

    Nice :thumbup: . Ich bin gespannt, was du in Zukunft noch so an prozeduralen Grafiken raushaust ;).

  • Wie kann man Funktionen im Tray Menü unabhängig voneinander ausführen?

    • name22
    • 31. Dezember 2013 um 22:51

    AdlibUnregister registriert eine Funktion, um sie in bestimmten Intervallen immer wieder aufzurufen. Mit AdlibUnregister wird diese Registrierung aufgehoben, so dass ab diesem Zeitpunkt kein automatischer Aufruf mehr stattfindet.
    Die Variable wird in der Funktion als Static deklariert, damit sie nach Beenden der Funktion weiter ihren Wert behält. Standardmäßig werden lokale Variablen zurückgesetzt wenn die Funktion beendet wird.
    Damit dieser Vorgang mehrere male funktioniert wird die Variable nach Erreichen des Maximalwertes auf den Ursprungswert zurückgesetzt und das automatische Aufrufen der Funktion gestoppt, bis das nächste Mal auf ASCII Code gedrückt wird.

    Wenn eine Funktion nach Ablauf des Intervalls durch die AdlibRegister Routine aufgerufen wird, dann wird das Script - egal an welchem Punkt es sich gerade befindet - pausiert um die Funktion auszuführen und danach wieder an der selben Stelle fortgesetzt. Somit scheint es als würden mehrere Prozesse parallel ablaufen.

    Und auch dir einen guten Rutsch ;).

  • AutoIt Versions-Archiv und Diskussionsthread (3.3.8.1 bis 3.3.10.2, Stand 30.12.13)

    • name22
    • 31. Dezember 2013 um 14:07

    Ich maße mir nicht an viel mit den letzten AutoIt Versionen experimentiert zu haben, aber wenn die neue Stableversion nicht den Anforderungen einer Stable gerecht werden sollte, kann die Schuld dafür nur bei den Entwicklern liegen. Und es sieht nicht gerade nach einer fertig gebackenen stabilen AutoIt Version aus wenn in so kurzer Zeit 3 von diesen stabilen Versionen rausgehauen werden. Wenn ich mir eine stabile Version installiere, gehe ich davon aus dass sie für einige Zeit der Status Quo bleibt und den Anforderungen der meisten AutoIt Benutzer genügt.
    Und wenn keiner die Beta testet, bzw. der Entwickler dieser Meinung ist, sollte man dann nicht vielleicht einfach bis nach Weihnachten warten? Wenn du sicher sagen kannst, dass die Version nicht ausreichend getestet wurde, dann sollte dazu wohl auch der Hauptentwickler vor dem Release in der Lage sein.

    Das ist lediglich meine Auffassung dieser seltsamen Schulddiskussion.
    Meine einzige persönliche Beschwerde ist die Anzahl der Stable Versionen die im Dezember vom Band gerollt sind, weil dass dem Gedanken einer stabilen Version widerspricht.

  • Wie kann man Funktionen im Tray Menü unabhängig voneinander ausführen?

    • name22
    • 31. Dezember 2013 um 13:53

    Das Problem ist die Sleep(5000) Funktion in deiner Funktion. Mit AdlibRegister kannst du diese Funktion in 5s Intervallen aufrufen, ohne dass das restliche Script für diese Zeit unterbrochen wird.

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    #include <TrayConstants.au3>
    ;#include <MsgBoxConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #NoTrayIcon

    [/autoit] [autoit][/autoit] [autoit]

    Opt("TrayOnEventMode", 1)
    Opt("TrayMenuMode", 11) ; Standard Traymenüeinträge (Skript pausieren/beenden) werden nicht angezeigt.

    [/autoit] [autoit][/autoit] [autoit]

    ;TraySetClick(16) ; Nur wenn die zweite Maustaste gedrückt wird, wird das Traymenü anzeigt.

    [/autoit] [autoit][/autoit] [autoit]

    TrayCreateItem("Info1")
    TrayItemSetOnEvent(-1, "ShowInfo1")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    TrayCreateItem("Info2")
    TrayItemSetOnEvent(-1, "ShowInfo2")

    [/autoit] [autoit][/autoit] [autoit]

    TrayCreateItem("ASCII")
    TrayItemSetOnEvent(-1, "_AsciiCode")

    [/autoit] [autoit][/autoit] [autoit]

    TrayCreateItem("")

    [/autoit] [autoit][/autoit] [autoit]

    TrayCreateItem("Beenden")
    TrayItemSetOnEvent(-1, "ExitScript")

    [/autoit] [autoit][/autoit] [autoit]

    TraySetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(1000) ; CPU-Last verhindern
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Funktionen
    Func ShowInfo1()
    TrayTip("ShowInfo1", "Dies ist ShowInfo1",66,1)
    ;MsgBox(0, "Info1", "Tray OnEvent Demo")
    EndFunc ;==>ShowInfo

    [/autoit] [autoit][/autoit] [autoit]

    Func ShowInfo2()
    TrayTip("ShowInfo2", "Dies ist ShowInfo2",66,1)
    ;MsgBox(2, "Info2", "Tray OnEvent Demo")
    EndFunc ;==>ShowInfo

    [/autoit] [autoit][/autoit] [autoit]

    Func _AsciiCode()
    AdlibRegister("_GenerateCode_Increment", 5000)
    _GenerateCode_Increment()
    EndFunc ;==>_AsciiCode

    [/autoit] [autoit][/autoit] [autoit]

    Func _GenerateCode_Increment()
    Local Static $iInt = 32

    [/autoit] [autoit][/autoit] [autoit]

    $iOct = StringFormat("%o", $iInt); <== Conversion
    TrayTip("Kodierungen", _
    "Dez(imal): " & $iInt & @CRLF & _
    "Hex(adezimal): " & Hex($iInt) & @CRLF & _
    "Oktal: " & $iOct & @CRLF & _
    "HTML: " & "&#" & $iInt & ";" & @CRLF & _
    "Chr (ASCII): " & Chr($iInt) & @CRLF, 1)

    [/autoit] [autoit][/autoit] [autoit]

    $iInt += 1

    [/autoit] [autoit][/autoit] [autoit]

    If $iInt = 36 Then
    $iInt = 32
    ConsoleWrite(_NowTime() & " OK_03: ASCII-Codes wurden erzeugt." & @CRLF)
    AdlibUnRegister("_GenerateCode_Increment")
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func ExitScript()
    Exit
    EndFunc ;==>ExitScript

    [/autoit]
  • Wie kann man Funktionen im Tray Menü unabhängig voneinander ausführen?

    • name22
    • 31. Dezember 2013 um 00:12

    Abgesehen davon, könntest du versuchen dein Programm auf den Eventmodus für Traymenüs umzustellen (Opt("TrayOnEventMode", 1)). Dadurch läuft die Abfrage des Traymenüs unabhängig von der Hauptschleife und sollte nicht all zu sehr durch deine Zeitaufwändigen Funktionen beeinflusst werden ;).

  • Audio-Ausgabegerät wählen

    • name22
    • 28. Dezember 2013 um 02:31

    Also willst du die Sounds letztendlich mit AutoIt abspielen, oder verstehe ich dich da falsch?

  • GUI mit Multiple Choice Auswahl

    • name22
    • 25. Dezember 2013 um 19:59

    Was ist denn dann der Auslöser? Wann sollen die Eingaben des Benutzers in der MsgBox ausgespuckt werden?

  • Fritz!dect 200

    • name22
    • 25. Dezember 2013 um 00:42

    Wenn du über die Benutzeroberfläche deiner FritzBox die gewünschten Aktionen mit deiner Steckdose durchführen kannst, dann sollte das auch mit AutoIt möglich sein. Ich kenne leider keinen effektiven Weg um das zu ermöglichen. Zur Not müsstest du den HTTP Verkehr zwischen PC und FritzBox mitschneiden und das dann mit AutoIt nachahmen (zum Beispiel mit der WinHTTP UDF). Hast du schon auf Google recherchiert? Evtl. hilft auch eine Nachfrage bei der AVM Community.

  • Eigener GDIPlus Button Style

    • name22
    • 20. Dezember 2013 um 22:57

    Ich weiß leider nicht wie im Moment dein Script aussieht. Die sauberste Lösung wäre vermutlich die Beta zu verwenden. Aber für dieses Script sollte meine Lösung genauso gut funktionieren es ist bloß nicht für den breiten Markt geeignet. ^^
    Was meinst mit Return einbauen?

  • Eigener GDIPlus Button Style

    • name22
    • 20. Dezember 2013 um 22:36

    Da war ich wohl zu langsam. Ich habe das Script von eukalyptus kurz umgeschrieben um es unter der aktuellen stable zum Funktionieren zu bringen.

    Spoiler anzeigen
    [autoit]

    #include <GDIP.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("MustDeclareVars", 1)
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $iWidth = 610
    Global $iHeight = 200
    Global $hGui = GUICreate("GDI+ Path Tutorial", $iWidth, $iHeight)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()
    Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
    Global $hBitmap = _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight)
    Global $hContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hContext, 2)
    _GDIPlus_GraphicsClear($hContext, 0xFFFFFFFF)
    GUIRegisterMsg($WM_PAINT, "WM_PAINT")
    GUIRegisterMsg($WM_ERASEBKGND, "WM_PAINT")

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _DrawButton("Button", 10, 30, 160, 100, 0xFFDD3030)
    _DrawButton("Text", 210, 30, 160, 100, 0xFF30AA30)
    _DrawButton("Abcdefg", 410, 30, 190, 100, 0xFF3040DD)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While Sleep(10)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _DrawButton($sText, $fX, $fY, $fW, $fH, $iColor, $fRadius = 40)
    Local $hPath = _GDIPlus_PathCreate()

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PathAddArc($hPath, $fX, $fY, $fRadius, $fRadius, 180, 90)
    _GDIPlus_PathAddArc($hPath, $fX + $fW - $fRadius, $fY, $fRadius, $fRadius, 270, 90)
    _GDIPlus_PathAddArc($hPath, $fX + $fW - $fRadius, $fY + $fH - $fRadius, $fRadius, $fRadius, 0, 90)
    _GDIPlus_PathAddArc($hPath, $fX, $fY + $fH - $fRadius, $fRadius, $fRadius, 90, 90)

    [/autoit] [autoit][/autoit] [autoit]

    Local $hMatrix = _GDIPlus_MatrixCreate()
    _GDIPlus_MatrixTranslate($hMatrix, 0, $fH * 0.1)
    _GDIPlus_PathTransform($hPath, $hMatrix)

    [/autoit] [autoit][/autoit] [autoit]

    Local $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath)
    _GDIPlus_PathBrushSetCenterPoint($hBrush, $fX + $fW * 0.5, $fY)
    _GDIPlus_PathBrushSetCenterColor($hBrush, 0xFF000000)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PathBrushSetSurroundColor($hBrush, 0x00000000)
    _GDIPlus_PathBrushSetSigmaBlend($hBrush, 1, 1)
    _GDIPlus_PathBrushSetFocusScales($hBrush, 0.85, 0.85)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsFillPath($hContext, $hPath, $hBrush)
    _GDIPlus_BrushDispose($hBrush)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_MatrixTranslate($hMatrix, 0, -$fH * 0.2)
    _GDIPlus_PathTransform($hPath, $hMatrix)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath)
    _GDIPlus_PathBrushSetCenterPoint($hBrush, $fX + $fW * 0.5, $fY)
    _GDIPlus_PathBrushSetCenterColor($hBrush, $iColor)
    Local $iR = Int(BitAND(BitShift($iColor, 16), 0xFF) * 0.3)
    Local $iG = Int(BitAND(BitShift($iColor, 8), 0xFF) * 0.3)
    Local $iB = Int(BitAND($iColor, 0xFF) * 0.3)
    Local $iColor2 = BitOR(BitShift($iR, -16), BitShift($iG, -8), $iB)
    _GDIPlus_PathBrushSetSurroundColor($hBrush, BitOR(0xFF000000, $iColor2))

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PathBrushSetSigmaBlend($hBrush, 1, 1)
    _GDIPlus_PathBrushSetFocusScales($hBrush, 0.97, 0.3)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsFillPath($hContext, $hPath, $hBrush)
    _GDIPlus_BrushDispose($hBrush)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $fRadius *= 0.6
    _GDIPlus_PathReset($hPath)
    _GDIPlus_PathAddArc($hPath, $fX + $fRadius * 0.2, $fY, $fRadius, $fRadius, 90, 180)
    _GDIPlus_PathAddArc($hPath, $fX + $fW - $fRadius * 1.2, $fY, $fRadius, $fRadius, 270, 180)

    [/autoit] [autoit][/autoit] [autoit]

    $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath)
    _GDIPlus_PathBrushSetCenterPoint($hBrush, $fX + $fW * 0.5, $fY + $fRadius * 0.2)
    _GDIPlus_PathBrushSetCenterColor($hBrush, 0xDDFFFFFF)
    _GDIPlus_PathBrushSetSurroundColor($hBrush, 0x00000000)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PathBrushSetFocusScales($hBrush, 0.8, 0.2)
    _GDIPlus_PathBrushSetSigmaBlend($hBrush, 1, 0.9)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsFillPath($hContext, $hPath, $hBrush)
    _GDIPlus_BrushDispose($hBrush)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PathReset($hPath)
    Local $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    Local $hFormat = _GDIPlus_StringFormatCreate()
    _GDIPlus_StringFormatSetAlign($hFormat, 1)
    DllCall($ghGDIPDll, "int", "GdipSetStringFormatLineAlign", "handle", $hFormat, "int", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Local $tLayout = _GDIPlus_RectFCreate($fX, $fY, $fW, $fH)
    _GDIPlus_PathAddString($hPath, $sText, $tLayout, $hFamily, 0, 32, $hFormat)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aBounds = _GDIPlus_PathGetWorldBounds($hPath)
    _GDIPlus_MatrixSetElements($hMatrix, 1, 0, 0, 1, 0, 0)
    _GDIPlus_MatrixTranslate($hMatrix, -($aBounds[0] + $aBounds[2] / 2) + $fX + $fW / 2, -($aBounds[1] + $aBounds[3] / 2) + $fY + $fH * 0.48)
    ;_GDIPlus_PathTransform($hPath, $hMatrix)
    _GDIPlus_MatrixDispose($hMatrix)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $aBounds = _GDIPlus_PathGetWorldBounds($hPath)
    $hBrush = _GDIPlus_LineBrushCreate(0, $aBounds[1] - 4, 0, $aBounds[1] + $aBounds[3] + 4, BitOR(0x40000000, $iColor2), 0x40FFFFFF)
    Local $hPen = _GDIPlus_PenCreate2($hBrush, 4)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDrawPath($hContext, $hPath, $hPen)
    _GDIPlus_PenDispose($hPen)

    [/autoit] [autoit][/autoit] [autoit]

    $hPen = _GDIPlus_PenCreate(BitOR(0x70000000, $iColor2), 2)
    _GDIPlus_GraphicsDrawPath($hContext, $hPath, $hPen)
    _GDIPlus_PenDispose($hPen)

    [/autoit] [autoit][/autoit] [autoit]

    $hBrush = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
    _GDIPlus_GraphicsFillPath($hContext, $hPath, $hBrush)
    _GDIPlus_BrushDispose($hBrush)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PathDispose($hPath)
    EndFunc ;==>_DrawButton

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _GDIPlus_PathBrushSetSurroundColor($hPathGradientBrush, $iARGB)
    ;Quickly put together by name22. No error handling whatsoever.
    Local $iPointCount = _GDIPlus_PathBrushGetPointCount($hPathGradientBrush)
    Local $aSurroundColors[$iPointCount + 1] = [$iPointCount]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $aSurroundColors[0]
    $aSurroundColors[$i] = $iARGB
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Return _GDIPlus_PathBrushSetSurroundColorsWithCount($hPathGradientBrush, $aSurroundColors)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func WM_PAINT($hWnd, $uMsgm, $wParam, $lParam)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_PAINT

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    _GDIPlus_GraphicsDispose($hContext)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>_Exit

    [/autoit]


    Das ist aber alles andere als sauber, daher empfehle ich UEZs Vorschlag.

  • Eigener GDIPlus Button Style

    • name22
    • 20. Dezember 2013 um 21:30

    Ok ok, nicht aufregen :S.
    Es wäre nützlich zu diesen Fehlern auch den entsprechenden Code zu sehen.

  • Eigener GDIPlus Button Style

    • name22
    • 20. Dezember 2013 um 21:24

    Achte darauf entweder die Beta oder die UDF zu verwenden. Nicht beides zur selben Zeit.

  • Eigener GDIPlus Button Style

    • name22
    • 20. Dezember 2013 um 21:02

    Genau deswegen meinte ich auch die GDIP.au3 ist dafür interessant :P.

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™