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

  • GDI+ Farbverlauf vom Mittelpunkt eines Kreises

    • name22
    • 4. Juni 2010 um 22:26

    Meinst du nicht, dass das dieser Thread ein bisschen alt ist? :D

    Edit: Müssen jetzt alle Nachholen meine Funktion zu loben? 8|

  • Überprüfen ob ein Wert in einem BEREICH liegt

    • name22
    • 4. Juni 2010 um 21:57

    Da gibt es viele Möglichkeiten...

    [autoit]

    Switch $Var
    Case 1 To 5
    ;Wert liegt zwischen 1 und 5
    EndSwitch

    [/autoit][autoit]

    If $Var >= 1 And $Var <= 5 Then ;Wert liegt zwischen 1 und 5

    [/autoit]
  • Farbverlauf GDI+

    • name22
    • 4. Juni 2010 um 21:37

    Meinst du vielleicht so etwas?

  • GUI immer im Vordergrund

    • name22
    • 4. Juni 2010 um 20:52
    Zitat


    Öhm... wie macht man das das andere downloaden können? ist ein ordner ^^


    Ähm meinst du als Dateianhang? ?(

  • Mausposition herausfinden

    • name22
    • 4. Juni 2010 um 20:27
    Zitat

    also wenn sich die maus bewegt das sich das ändert(nicht in der msgbox sondern label^^)


    Mach halt eine GUI und ein Label und Update es in einer Schleife oder per AdlibRegister. Und GUICtrlSetData könntest du auch gebrauchen ^^.

  • Frage Vista::D

    • name22
    • 4. Juni 2010 um 20:25
    Zitat

    Was hast du für ein Betriebssystem ?


    Die Frage meinst du nicht ernst, oder? 8|

  • Progressbar

    • name22
    • 4. Juni 2010 um 18:28

    Damit die vertikal ist musst du den Stil $PBS_VERTICAL verwenden oder einfach 0x04. ;)
    Und für 2 Farben musst du wahrscheinlich auf GDI+ ausweichen, oder die UDF von Progandy verwenden.

    Edit: Mann bin ich heute langsam :D .

  • Die Funktion der Buffers

    • name22
    • 4. Juni 2010 um 18:15

    Ich hab hier mal ein paar Funktionen geschrieben, die dir vielleicht weiterhelfen. ;)

    Spoiler anzeigen
    [autoit]

    Func _PointIsInCircle($iX_Point, $iY_Point, $iX_Circle, $iY_Circle, $iRadius_Circle)
    $iDistPoints = _GetPointsDistance($iX_Point, $iY_Point, $iX_Circle, $iY_Circle)
    If ($iRadius_Circle > 0 And $iDistPoints < $iRadius_Circle) Or ($iRadius_Circle < 0 And $iDistPoints > $iRadius_Circle) Or $iDistPoints = 0 Then Return True
    Return False
    EndFunc ;==>_PointIsInCircle

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

    Func _CircleIsTouchingCircle($iX_Circle1, $iY_Circle1, $iX_Circle2, $iY_Circle2, $iRadius_Circle1, $iRadius_Circle2)
    $iDistCircles = _GetPointsDistance($iX_Circle1, $iY_Circle1, $iX_Circle2, $iY_Circle2)
    If $iDistCircles < $iRadius_Circle1 + $iRadius_Circle2 Then Return True
    Return False
    EndFunc ;==>_CircleIsTouchingCircle

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

    Func _CircleIsInCircle($iX_Circle1, $iY_Circle1, $iX_Circle2, $iY_Circle2, $iRadius_Circle1, $iRadius_Circle2)
    $iDistCircles = _GetPointsDistance($iX_Circle1, $iY_Circle1, $iX_Circle2, $iY_Circle2)
    If $iRadius_Circle1 > $iRadius_Circle2 And $iDistCircles <= $iRadius_Circle1 - $iRadius_Circle2 Then Return True
    If $iRadius_Circle1 < $iRadius_Circle2 And $iDistCircles <= $iRadius_Circle2 - $iRadius_Circle1 Then Return True
    Return False
    EndFunc ;==>_CircleIsInCircle

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

    Func _PointIsInEllipse($iX_Point, $iY_Point, $iXM_Ellipse, $iYM_Ellipse, $iWidth_Ellipse, $iHeight_Ellipse)
    If ($iX_Point - $iXM_Ellipse) ^ 2 / ($iWidth_Ellipse / 2) ^ 2 + ($iY_Point - $iYM_Ellipse) ^ 2 / ($iHeight_Ellipse / 2) ^ 2 <= 1 Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc

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

    Func _PtIsInRect($iX_Point, $iY_Point, $iX_Rect, $iY_Rect, $iWidth_Rect, $iHeight_Rect)
    If $iX_Point >= $iX_Rect And $iY_Point >= $iY_Rect And $iX_Point <= $iX_Rect + $iWidth_Rect And $iY_Point <= $iY_Rect + $iHeight_Rect Then Return 1
    Return 0
    EndFunc ;==>_PtIsInRect

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

    Func _GetPointsDistance($iPointX1, $iPointY1, $iPointX2, $iPointY2)
    Return Sqrt(($iPointX1 - $iPointX2) ^ 2 + ($iPointY1 - $iPointY2) ^ 2)
    EndFunc ;==>_GetPointsDistance

    [/autoit]
  • Die Funktion der Buffers

    • name22
    • 4. Juni 2010 um 17:53

    Wie reinpflanzen? Das besondere an diesem Script ist die Überprüfung ob die Koordinaten die X und Y Maße der GUI überschreiten.
    Eine Kollisionsüberprüfung ist nicht in GDI+ eingebaut das musst du dir schon selber basteln. ;)

  • Die Funktion der Buffers

    • name22
    • 4. Juni 2010 um 17:47

    Wie oft müssen wir dich noch auf die Bearbeiten Funktion hinweisen? :cursing:
    Dieser Befehl

    [autoit]

    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)

    [/autoit]

    erzeugt eine Grafik aus einem Bild Objekt so, dass man hineinzeichnen kann.
    Beim Buffering geht es darum die Zeichenvorgänge die teilweise ein wenig Zeit beanspruchen im Hintergrund zu erledigen und erst danach das Bild auf den sich der Backbuffer bezieht auf die GUI zu zeichnen.

  • [TXT]Alles nach Buchstaben x löschen

    • name22
    • 4. Juni 2010 um 17:18

    Ähm StringReplace?

  • Die Funktion der Buffers

    • name22
    • 4. Juni 2010 um 17:14
    Zitat

    Ich versteh das nicht X(


    Was können wir dann bitte noch tun?

  • GDI+ was ist das?

    • name22
    • 4. Juni 2010 um 16:55

    Bitte hör mit den Doppelpostings auf.....
    Was glaubst du wozu der Bearbeiten Knopf da ist? :cursing:
    Ließ dir den Abschnitt "Zur Funktion des Buffers" mal durch. Ich habe keine Minute gebrauct um das zu finden, was ist für dich daran so schwer? 8|

  • GDI+ was ist das?

    • name22
    • 4. Juni 2010 um 16:28
    Zitat

    ich weiss... aber wie kann ichs sonst machen ohne so lange komplizierte sachen zu schreiben?


    Du kannst die Koordinaten überprüfen ;). Oder die Region Methode verwenden, aber das verstehst du ja nicht.
    Ist das nicht in Ubuntus Tutorial beschrieben? ?(

  • Gdi+ Tutorial [Part 5]

    • name22
    • 4. Juni 2010 um 16:18

    Wie wäre es wenn die Resourcen auch noch freigegeben würden? ;)

  • GDI+ was ist das?

    • name22
    • 4. Juni 2010 um 16:16

    Pixelsearch ist wohl die unsicherste und langsamste Methode...

  • [TXT]Alles nach Buchstaben x löschen

    • name22
    • 4. Juni 2010 um 01:49

    Das müsste funktionieren.

    [autoit]

    StringMid($sString, 1, StringInstr($sString, "x") - 1)

    [/autoit]
  • FileWrite bzw. Open

    • name22
    • 4. Juni 2010 um 01:46

    FileOpen gibt nicht den Text einer Datei zurück sondern eine Art Handle, also musst du danach FileRead mit dem Handle von FileOpen benutzen um den Text auszulesen. _StringBetween gibt den gefundenen String nicht in Stringform zurück sondern als Array, denn es könnte ja auch sein, dass mehrere dieser Fälle eintreten. Wenn du den Text bearbeitet hast musst du ihn mit FileWrite wieder in die Datei schreiben, allerdings musst du dann FileOpen mit einem anderen Modus verwenden z.B. wird die Datei im Lesemodus geöffnet wenn du als 2ten Parameter von FileOpen 0 verwendest. Für genaueres schau mal in die Hilfe. ;)

  • Frage an GDIPlus Users!

    • name22
    • 3. Juni 2010 um 23:08

    Das Bild verschwindet bei mir nicht, egal was ich mache... Außer ich minimiere es, dann müsste man es so machen.

    Spoiler anzeigen
    [autoit]

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

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

    Opt("MustDeclareVars", 1) ; 0=nein, 1=erfordert Deklaration
    Opt("GUICloseOnESC", 1) ; 1=ESC beendet, 0=ESC schließt nicht

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

    Global $GUI, $Logo_PNG, $hGraphic, $hBitmap, $hBuffer

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

    $GUI = GUICreate("Test-GDIPlus", 364, 290) ; <- Ohne Parameter!
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($GUI)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(364, 290, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

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

    $Logo_PNG = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\testbild.png")

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

    _GDIPlus_GraphicsDrawImage($hBuffer, $Logo_PNG, 32, 6)
    WM_PAINT()

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

    GUIRegisterMsg($WM_PAINT, "WM_PAINT")

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

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

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

    GUIDelete($GUI) ; Schließe Gui
    _GDIPlus_GraphicsDispose($hGraphic) ; Gib Grafik-Objekt wieder frei
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_ImageDispose($Logo_PNG) ; Gib das Bild-Objekt frei
    _GDIPlus_Shutdown() ; Gib die verwendeten Ressourcen wieder frei
    Exit

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

    Func WM_PAINT()
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 364, 290)
    EndFunc

    [/autoit]


    Und ich habe bis jetzt noch keine andere Lösung für so ein GDI+ basiertes Script gesehen.

  • Frage an GDIPlus Users!

    • name22
    • 3. Juni 2010 um 22:49

    Deine Methode funktioniert aber gar nicht... Ich nehme an, dass beim Desktop anzeigen Event nicht immer ein WM_PAINT Event gesendet wird, vor allem wegen dem Stil $WS_EX_TOPMOST.

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™