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

  • bunter Ladebalken auf einer Form mit GDI+

    • name22
    • 7. Dezember 2010 um 22:20
    Zitat

    und das was transparent ist, ist blau :(


    Nein, aber der Hintergrund ist schwarz und die haltransparenten blauen Pixel erscheinen dadurch dunkelblau ;).
    Ich glaube das was du machen möchtest lässt sich nicht so einfach realisieren. Transparente GUIs und GDI+ haben noch nie gut miteinander harmoniert. Es müsste gehen, wenn du ein Fenster für das Hintergrundbild erstellst und eines für die Progressbar. Um ein Beispiel zu schreiben bin ich jetzt aber leider zu müde ;). :sleeping:

  • Gedrehter Text

    • name22
    • 7. Dezember 2010 um 21:07

    So, ich hab jetzt mal eine Funktion geschrieben die im Prinzip das machst was du willst. Nur musst du dann die Bitmap außerhalb der Funktion erzeugen. (Wozu überhaupt die extra Bitmap? Und Wieso willst du das alle 100ms neuzeichnen lassen? Da reicht doch schon WM_PAINT.).

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GuiConstantsEx.au3>
    #include <array.au3>
    #include <string.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>

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

    Opt("GuiOnEventMode", 1)

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

    $hwnd = GUICreate("Mathe", 800, 900)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup()

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

    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(800, 900, $hGraphics)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
    _GDIPlus_GraphicsClear($hGraphics, 0xFFFFFFFF)

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

    $hBrushText = _GDIPlus_BrushCreateSolid(0xFF000000)
    $hFormat = _GDIPlus_StringFormatCreate()
    $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFamily, 12)

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

    $hPen_All=_GDIPlus_PenCreate(0xFF000000, 2)
    $hPen_Arrow=_GDIPlus_PenCreate(0xFF000000, 2)
    $hCap = _GDIPlus_ArrowCapCreate (3, 6)
    _GDIPlus_PenSetCustomEndCap ($hPen_Arrow, $hCap)
    ;~ _GDIPlus_PenSetCustomCap ($hPen_Arrow, $hCap)

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

    AdlibRegister("_DrawFrame", 100) ;Ich kann die Timer UDF nicht leiden, und in diesem Fall ist AdlibRegister wirklich einfacher ;)

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")
    GUIRegisterMsg($WM_PAINT, "WM_PAINT") ;Sobald Windows ein Neuzeichnen des Fensters verlangt, wird der Backbuffer in den Frontbuffer gezeichnet

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

    While Sleep(1000) ;Eine leere Endlosschleife belastet den Prozessor, daher ist ein Sleep angebracht.
    WEnd

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

    Func WM_PAINT()
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0) ;Zeichnet den Backbuffer in den Frontbuffer
    EndFunc

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

    Func _DrawFrame()
    _GDIPlus_GraphicsClear($hBuffer, 0xFFFFFFFF)

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

    _GDIPlus_GraphicsDrawRect($hBuffer, 250, 300, 25, 600, $hPen_All)
    _GDIPlus_GraphicsDrawRect($hBuffer, 350, 100, 25, 800, $hPen_All)
    _GDIPlus_GraphicsDrawLine($hBuffer, 350, 880, 275, 880, $hPen_Arrow)
    _GDIPlus_GraphicsDrawLine($hBuffer, 275, 880, 350, 880, $hPen_Arrow)
    _GDIPlus_GraphicsDrawString($hBuffer, "100 Fuß", 275, 860, "Arial", 12)
    _GDIPlus_GraphicsDrawLine($hBuffer, 225, 300, 225, 900, $hPen_Arrow)
    _GDIPlus_GraphicsDrawLine($hBuffer, 225, 900, 225, 300, $hPen_Arrow)

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

    _GDIPlus_GraphicsDrawTextRotated($hBuffer, "60 Fuß", $hFont, $hFormat, $hBrushText, 200, 245, 270)

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

    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0) ;Zeichnet den Backbuffer in den Frontbuffer
    EndFunc

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

    Func _GDIPlus_GraphicsDrawTextRotated($hGraphic, $sString, $hFont, $hFormat, $hBrush, $iX_Text, $iY_Text, $nAngle)
    $tStringMeasure = _GDIPlus_GraphicsMeasureString($hGraphic, $sString, $hFont, _GDIPlus_RectFCreate(), $hFormat)
    $iStringWidth = DllStructGetData($tStringMeasure, "width")
    $iStringHeight = DllStructGetData($tStringMeasure, "height")
    $hMatrixR = _GDIPlus_MatrixCreate()
    $hMatrixReset = _GDIPlus_MatrixCreate()

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

    _GDIPlus_MatrixTranslate($hMatrixR, $iX_Text + $iStringWidth / 2, $iY_Text + $iStringHeight / 2)
    _GDIPlus_MatrixRotate($hMatrixR, $nAngle)
    _GDIPlus_GraphicsSetTransform($hGraphic, $hMatrixR)
    _GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, _GDIPlus_RectFCreate($iStringWidth / -2, $iStringHeight / -2), $hFormat, $hBrush)
    _GDIPlus_GraphicsSetTransform($hGraphic, $hMatrixReset)

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

    _GDIPlus_MatrixDispose($hMatrixR)
    _GDIPlus_MatrixDispose($hMatrixReset)
    EndFunc

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

    Func _Close()
    _GDIPlus_GraphicsDispose($hGraphics) ;Das gleiche gilt hier, die erzeugten Grafiken; Bitmaps etc. werden nicht nur mit _GDIPlus_Shutdown gelöscht.
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrushText)
    _GDIPlus_PenDispose($hPen_All)
    _GDIPlus_PenDispose($hPen_Arrow)
    _GDIPlus_ArrowCapDispose($hCap)
    _GDIPlus_Shutdown()
    exit 0
    EndFunc

    [/autoit]
  • Gedrehter Text

    • name22
    • 7. Dezember 2010 um 20:36

    Es ist schwierig zu verstehen was du eigentlich erreichen möchtest...
    Ich habe mal ale Fehler entfernt und kommentiert. Allerdings bin ich mir nicht sicher ob es jetzt so funktioniert wie du das wolltest. :S

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GuiConstantsEx.au3>
    #include <array.au3>
    #include <string.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>

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

    Opt("GuiOnEventMode", 1)

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

    $hwnd = GUICreate("Mathe", 800, 900)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup()

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

    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(800, 900, $hGraphics)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
    _GDIPlus_GraphicsClear($hGraphics, 0xFFFFFFFF)

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

    $hPen_All=_GDIPlus_PenCreate(0xFF000000, 2)
    $hPen_Arrow=_GDIPlus_PenCreate(0xFF000000, 2)
    $hCap = _GDIPlus_ArrowCapCreate (3, 6)
    _GDIPlus_PenSetCustomEndCap ($hPen_Arrow, $hCap)
    ;~ _GDIPlus_PenSetCustomCap ($hPen_Arrow, $hCap)

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

    AdlibRegister("_DrawFrame", 100) ;Ich kann die Timer UDF nicht leiden, und in diesem Fall ist AdlibRegister wirklich einfacher ;)

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")
    GUIRegisterMsg($WM_PAINT, "WM_PAINT") ;Sobald Windows ein Neuzeichnen des Fensters verlangt, wird der Backbuffer in den Frontbuffer gezeichnet

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

    While Sleep(1000) ;Eine leere Endlosschleife belastet den Prozessor, daher ist ein Sleep angebracht.
    WEnd

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

    Func WM_PAINT()
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0) ;Zeichnet den Backbuffer in den Frontbuffer
    EndFunc

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

    Func _DrawFrame()
    _GDIPlus_GraphicsClear($hBuffer, 0xFFFFFFFF)

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

    _GDIPlus_GraphicsDrawRect($hBuffer, 250, 300, 25, 600, $hPen_All)
    _GDIPlus_GraphicsDrawRect($hBuffer, 350, 100, 25, 800, $hPen_All)
    _GDIPlus_GraphicsDrawLine($hBuffer, 350, 880, 275, 880, $hPen_Arrow)
    _GDIPlus_GraphicsDrawLine($hBuffer, 275, 880, 350, 880, $hPen_Arrow)
    _GDIPlus_GraphicsDrawString($hBuffer, "100 Fuß", 275, 860, "Arial", 12)
    _GDIPlus_GraphicsDrawLine($hBuffer, 225, 300, 225, 900, $hPen_Arrow)
    _GDIPlus_GraphicsDrawLine($hBuffer, 225, 900, 225, 300, $hPen_Arrow)
    _DrawSpinnedText($hBuffer, "60 Fuß", 200, 425, 270)

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

    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0) ;Zeichnet den Backbuffer in den Frontbuffer
    EndFunc

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

    Func _DrawSpinnedText($hGraphics_s, $hText,$x, $y, $nAngle)
    $hMatrix = _GDIPlus_MatrixCreate()
    $hBMP = _GDIPlus_BitmapCreateFromGraphics(StringLen($hText)*12, 16, $hGraphics_s)
    $hG = _GDIPlus_ImageGetGraphicsContext($hBMP)
    _GDIPlus_GraphicsSetSmoothingMode($hG, 2)

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

    _GDIPlus_GraphicsDrawString($hG, $hText, 0, 0, "Arial", 12)
    _GDIPlus_MatrixRotate($hMatrix, $nAngle, "False")
    _GDIPlus_GraphicsSetTransform($hG, $hMatrix)
    _GDIPlus_GraphicsDrawImage($hGraphics_s, $hBMP, $x, $y)

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

    _GDIPlus_MatrixDispose($hMatrix) ;Ressourcen Aufräumen ist wichtig, sonst wird der Arbeitsspeicher unnötig zugemüllt.
    EndFunc

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

    Func _Close()
    _GDIPlus_GraphicsDispose($hGraphics) ;Das gleiche gilt hier, die erzeugten Grafiken; Bitmaps etc. werden nicht nur mit _GDIPlus_Shutdown gelöscht.
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_PenDispose($hPen_All)
    _GDIPlus_PenDispose($hPen_Arrow)
    _GDIPlus_ArrowCapDispose($hCap)
    _GDIPlus_Shutdown()
    exit 0
    EndFunc

    [/autoit]


    Ich glaube das mit dem Backbuffer hast du irgendwie falsch verstanden. ^^

  • GUI Creator

    • name22
    • 4. Dezember 2010 um 10:46
    Zitat

    Ne so was meine ich nicht ich will das man den Buttons nach dem erstellen immer noch verschieben kann.


    Wie meinst du das? Suchst du

    [autoit]

    GUICtrlSetPos()

    [/autoit]

    ?

  • Morgen :D

    • name22
    • 3. Dezember 2010 um 18:45

    Nun, dann herzlich willkommen und viel Spaß im Forum ProfW :thumbup: .
    Halte dich einfach an die Forenregeln und wir werden alle gut miteinander auskommen :P.

  • Gui als Button in Gui + Funktion einbauen

    • name22
    • 29. November 2010 um 18:56

    Als erstes musst du wissen wann die linke Maustaste innerhalb des Fensters gedrückt wird. Das kannst du mit GUIGetMsg und $GUI_EVENT_PRIMARYDOWN erreichen. Wenn in das Fenster geklickt wurde musst du herausfinden wo geklickt wurde. Dazu verwendest du entweder als Parameter 1 bei GUIGetMsg um die Koordinaten zu bekommen (siehe Hilfe), oder du verwendest MouseGetPos (dazu musst du allerdings einstellen, dass die Koordinaten relativ zum Client Bereich des Fensters sind. Also verwendest du Am Anfang des Scripts Opt("MouseCoordMode", 2)). Dann musst du überprüfen ob die Koordinaten des MouseClicks denn auch innerhalb des Rechtecks des Buttons liegen, und das geht z.B. mit dieser Funktion:

    [autoit]

    Func _PtIsInRect($iXPoint, $iYPoint, $iXRect, $iYRect, $iWidthRect, $iHeightRect) ;Überprüft ob ein Punkt innerhalb eine Rechtecks ist ;)
    If $iXPoint >= $iXRect And $iYPoint >= $iYRect And $iXPoint <= $iXRect + $iWidthRect And $iYPoint <= $iYRect + $iHeightRect Then Return 1
    Return 0
    EndFunc ;==>_PtIsInRect

    [/autoit]


    Wenn die Funktion 1 zurückgibt wurde der Button geklickt ;).

    Edit: *seufz* ich sollte versuchen schneller zu schreiben... :S

  • Bild (png) in GUI verschwindet nach kurzer Zeit

    • name22
    • 28. November 2010 um 18:38

    @YayYo Nichts für ungut, aber das ist das selbe in grün :huh: .....

  • Problem mit Funktionen

    • name22
    • 28. November 2010 um 17:42
    Zitat

    ;Bitte nicht mit scriptinterner variable


    Ich verstehe nicht wozu man so etwas brauchen könnte, aber du kannst ja statt einer normalen Variable eine Umgebungsvariable mit EnSet setzen und mit EnvGet auslesen...

  • AutoIT Compile

    • name22
    • 28. November 2010 um 15:57
    Zitat

    an welcher stelle muss ich eig den pfad zum icon setzen ?


    Ich glaub ich fress'n Besen! :pinch: Ist es zu schwer für dich auf einen Link zu klicken? http://translation.autoit.de/onlinehilfe/intro/compiler.htm. Das ist jetzt das 3te Mal, dass wir diesen Link geben.

  • Ueberpruefen ob Prozess reagiert

    • name22
    • 28. November 2010 um 15:08
    Zitat

    Schau mal in meine Signatur. ;)


    :rolleyes: Manchmal sieht man den Wald vor lauter Bäumen nicht...
    Alternativ würde vielleicht auch ein ControlClick funktionieren. Die Funktion gibt bei einem Fehler ja auch 0 zurück. :S

  • Umfrage für CPU-Kauf

    • name22
    • 28. November 2010 um 15:05

    Dafür gibt es doch das Forum Off-Topic ;).

  • AutoIT Compile

    • name22
    • 28. November 2010 um 15:04
    Zitat

    Das ist doch nicht zu glauben wenn ich den cod für 32 bit nehme erstellt das teil wieder keine exe man ej


    Hast du ein 64 Bit oder 32 Bit System?

  • Ueberpruefen ob Prozess reagiert

    • name22
    • 28. November 2010 um 15:03
    Zitat

    Kann es nur nicht testen, da ich mit Absicht keine Anwendung dazu bringen kann, nicht mehr zu reagieren. :whistling:


    8| Hast du Linux? Bei mir macht Vista das ja fast von allein...

  • AutoIT Compile

    • name22
    • 28. November 2010 um 13:59
    Zitat

    Und wie passt man das an ioch habe doch kp wie das gehen soll


    ...Kein kommentar...

    Für 32 Bit nimmst du diese Zeile:

    [autoit]

    RunWait('"' & StringTrimRight(@AutoItExe, 11) & 'Aut2Exe\Aut2exe.exe" /in "' & $PathSource & '" /out "' & $PathDest & '.exe" /x86')

    [/autoit]

    Für 64 Bit nimmst du diese Zeile:

    [autoit]

    RunWait('"' & StringTrimRight(@AutoItExe, 15) & 'Aut2Exe\Aut2exe.exe" /in "' & $PathSource & '" /out "' & $PathDest & '.exe" /x64')

    [/autoit]

    Ist das wirklich so schwer?

  • AutoIT Compile

    • name22
    • 28. November 2010 um 12:36
    Zitat

    Wie kann ich meine au3 eig als 32bit compilen da der Befehl dazu bei meinem 64 com net geht dort erstellt einfach keine exe nur halt mit 64?


    Du willst mich jetzt aber echt veralbern, oder?

    Zitat von name22

    *Seufz* Ich scheine mit einer Wand zu reden...

    [autoit]

    RunWait('"' & StringTrimRight(@AutoItExe, 15) & 'Aut2Exe\Aut2exe.exe" /in "' & $PathSource & '" /out "' & $PathDest & '.exe" /x64'); x64 statt x86 ;)

    [/autoit]


    Selbst wenn man auch nur ein bisschen Ahnung von PC's hat oder auch nur Ansatzweise diese schon bereits 2 Mal gepostete Seite liest, kommt man darauf, dass x86 für 32 Bit und x64 für 64 Bit steht.
    Und wenn du nun das ganze auf einem 32 Bit PC kompilierst, musst du StringTrimRight anpassen. Oder du machst es, wie misterspeed vorgeschlagen hat, mit StringSplit.
    Du hast alle Informationen die du brauchst, im Grunde musst du jetzt nur noch lesen und ein wenig das Gehirn benutzen...

  • Happy Birthday, Der_Doc

    • name22
    • 28. November 2010 um 12:26

    Happy Birthday auch von mir Der_Doc! :thumbup:

    [Blockierte Grafik: http://img155.imageshack.us/img155/4010/bdayi.png]

  • Picture problem

    • name22
    • 28. November 2010 um 00:32

    Vielleicht fehlt ja noch ein #include <WindowsConstants.au3>...
    Und $SS_REALSIZEIMAGE gibt es bei mir nicht.

    Zitat

    Zu 2: Wie meinst Du das mit vorher Disablen?

    [autoit]

    GUICtrlSetState($Control, $GUI_DISABLE)

    [/autoit]
  • ToolTip verschwindet nicht

    • name22
    • 28. November 2010 um 00:15
    Zitat

    Was denkst Du was ich benutze? xD Die deutsche Hilfe natürlich ^^ :rofl:


    Das scheint ja dann bei dir keinen Unterschied zu machen...
    Ich denke wir sind hier schon längst vom eigentlichen Thema abgekommen, also wie wäre es wenn wir das Thema jetzt mal für abgeschlossen erklären?

  • Happy Birthday BugFix!

    • name22
    • 28. November 2010 um 00:12

    Alles Gute BugFix! :party:
    Einen schönen 49 Geburtstag. :thumbup:
    Ich würde dir ja gerne ein nettes Geburtstagsbild mit Photoshop malen, aber ich bin viel zu Müde um mit dem Zeichenbrett jetzt noch was Ansehnliches hinzuzaubern :D.

  • ToolTip verschwindet nicht

    • name22
    • 27. November 2010 um 23:27
    Zitat

    Die Hilfe von AutoIt benutze ich schon, nur manche Wörter verstehe ich nicht,
    darum frage ich hier nach...


    Das ist ja auch keine Problem, aber abgesehen davon, dass die Bedeutung des Wortes "Parameter" in diversen AutoIt Tutorials beschrieben wird, stellst du manche Fragen mehrmals obwohl sie schon längst beanstwortet wurden. ;)

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™