Vielen Dank,
ich hoffe wir werden gut miteinander auskommen ![]()
Beiträge von HopFail
-
-
Also auf jeden Fall war das von H2112, das von EM und das wieder von H2112 ...... nein, von EM!

-
-
Ja, also ich finde keine Wände?
-
Und anstatt
[autoit]While 1
[/autoit][autoit][/autoit][autoit]sleep (100)
[/autoit][autoit][/autoit][autoit]WEnd
[/autoit]
[autoit]
solltest du folgendes nehmen:While 1
[/autoit]
$msg=GuiGetMsg()
Switch $msg; wechselt zur Variable $msg
Case $GUI_EVENT_Close; wenn der Benutzer auf das X klickt (oder Alt+F4)
ExitLoop; beendet die While-Schleife und somit die GUI
EndSwitch
WEnd -
Nein, sorry, habe mich vertan. Ich meine, dass der Wert X-Koordinate der ersten Variable bis zur X-Koordinate der ersten Variable (50 addiert) in einem Wert der X-Koordinate der zweiten Variable liegt (50 addiert).
Ich habe nicht ganz an das Thema gedacht, tut mir leid.
-
Eben, und Y und Z möchte ich nicht angeben, die sollen ja durch den Wert der Variable ermittelt werden (Y=X To X+20, Z=X To X-20). Verstehst du mich jetzt?
-
Ich versteh aber nicht, warum das jetzt den Wert um die Variable überprüft und nicht einen vorher bestimmten. Denn das will ich ja nicht *verzweifel*
-
Alles anzeigen
Hi,
da ich die Range um eine Variable auch mal gebraucht habe, kann ich dir folgende Func empfehlen:
[autoit]
[/autoit]
Func _IsBetween($A, $Min, $Max)
Return $A >= $Min And $A <= $Max
EndFuncZu deinem Problem:
[autoit]
Schau dir mal diese Zeile an:
[/autoit]
If $balloonY = $figurY And $balloonX >= 20 Or $balloonX <= 20 = $figurX Then _GDIPlus_ImageDispose($balloon_red)LG
EalendilKannst du mir diese Func vielleicht genauer erklären, ich blick da gar nicht durch.
Und zu deiner letzten Äußerung: Damit befasse ich mich doch schon die ganze Zeit
-
Danke, aber das klappt nicht :(. Kannst du dir vielleicht das ganze Script anschauen? (Zeile 63)
Spoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
OnAutoItExitRegister("_Exit")
_GDIPlus_Startup(); Variablen ============================================================================
[/autoit] [autoit][/autoit] [autoit]Global $iWidth = 500, $iHeight = 600
[/autoit] [autoit][/autoit] [autoit]
Global $iX = 0, $iY = 0
Global $hBackground = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\background.png")
Global $balloon_red = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\balloon_red.png")
Global $balloon_green = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\balloon_green.png")
Global $balloon_blue = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\balloon_blue.png")
Global $balloon_yellow = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\balloon_yellow.png")
Global $balloon_pink = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\balloon_pink.png")
Global $figur = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\figur.png")
Global $balloonX = 50
Global $balloonY = 50
Global $figurX = 200
Global $figurY = 467
Global $figurWidth = 60
Global $figurHeight = 100; GUI ============================================================================
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("TrapTheBalloon",$iWidth,$iHeight,Default,Default)
[/autoit] [autoit][/autoit] [autoit]
$hWnd = WinGetHandle("TrapTheBalloon")
GUISetState()
GUISetOnEvent(-3, "_Exit"); GDI+ ============================================================================
[/autoit] [autoit][/autoit] [autoit]$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
[/autoit] [autoit][/autoit] [autoit]
;Erstmal das normale Grafik-Objekt erstellen.
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphic)
;Statt uns mit dem normalen Frontbuffer zufrieden zu geben, erstellen wir erstmal eine
;Bitmap, mit Bezug auf unser Grafikobjekt.
$hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
;Nachdem unser Bitmap erstellt ist, holen wir uns den Graphics Context. Dieser
;wird von uns verwendet, um darin zu zeichnen
_GDIPlus_GraphicsSetSmoothingMode($hBackBuffer, 2)
_GDIPlus_GraphicsClear($hGraphic); While-Schleife ============================================================================
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_PAINT, "_WM_PAINT")While 1
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsClear($hBackBuffer)
[/autoit] [autoit][/autoit] [autoit]
; Superradierer benutzen um alten Backbuffer zu löschen
_GDIPlus_GraphicsSetSmoothingMode($hBackBuffer, 5)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $hBackground, 0, 0, $iWidth, $iHeight)
_GDIPlus_GraphicsDrawImage($hBackbuffer, $balloon_red, 50, $balloonY)
$balloonY += 4
If $balloonY > $iHeight Then $balloonY = -75
_GDIPlus_GraphicsDrawImage($hBackbuffer, $figur, $figurX, $figurY)
If _IsPressed("25") And $figurX >= 5 Then $figurX -= 4
If _IsPressed("27") And $figurX + 79 <= 495 Then $figurX += 3
If $balloonY = $figurY And $balloonX >= 20 Or $balloonX <= 20 = $figurX Then _GDIPlus_ImageDispose($balloon_red)
_WinAPI_RedrawWindow($hWnd, 0, 0,$RDW_INTERNALPAINT)
; WM_PAINT wird nur aufgerufen, wenn alle Berechnungen fertig sind!
; In WM_PAINT wird selbst nichts berechnet, oder gezeichnet. diese Funktion wird nur das
; Bitmap-Objekt in das Grafik-Objekt übertragen.
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, $iX, $iY, $iWidth, $iHeight)
; _GDIPlus_GraphicsDrawImageRect() überträgt den Backbuffer in den Frontbuffer.
; Der erste Parameter ist unser Frontbuffer (Grafik Objekt).
; Der zweite ist unsere Bitmap, welche ja als BackBuffer fungiert.
; Darauf folgt der Abschnitt den man übertragen will.
; i.d.R. ist es 0, 0 für X und Y koordinaten, und die GUI Breite und Höhe für
; Width und Height. Kommt natürlich immer drauf an, wie groß euer Grafikobjekt ist,
; und ob ihr den vollen Teil zeichnen wollt.
WEnd; Funktionen ============================================================================
[/autoit] [autoit][/autoit] [autoit]Func _WM_PAINT()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, $iX, $iY, $iWidth, $iHeight)
EndFuncFunc _Exit() ; Clean up resources
[/autoit]
_GDIPlus_GraphicsDispose($hGraphic) ; Grafikobjekt auflösen
_GDIPlus_BitmapDispose($hBitmap); Bitmap auflösen
_GDIPlus_ImageDispose($balloon_red); Bild auflösen
_GDIPlus_ImageDispose($balloon_green); Bild auflösen
_GDIPlus_ImageDispose($balloon_blue); Bild auflösen
_GDIPlus_ImageDispose($balloon_yellow); Bild auflösen
_GDIPlus_ImageDispose($balloon_pink); Bild auflösen
_GDIPlus_ImageDispose($hBackground); Bild auflösen
_GDIPlus_ImageDispose($figur); Bild auflösen
_GDIPlus_Shutdown() ; GDI+ Engine beenden
Exit
EndFunc ;==>_ExitDer Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Edit: Ich meine, dass der Wert der Variable sich ja ändert und ich alle Werte haben möchte, die bis 20 größer und kleiner sind als der Wert der Variable.
-
Hey,
wie mache ich eine "Range" um eine Variable? Also es soll folgenden Sinn haben:
Spoiler anzeigen
[autoit]If $coord1X To $coord1X + 20 Or $coord1X To $coord1X - 20 = $coord2X To $coord2X + 20 Or $coord2X To $coord2X - 20
[/autoit]
Then...Also 2 Zahlenmengen kleiner und größer als der Wert in der Variable (das oben genannte Beispiel funktioniert nicht, Fehler bei To).
Edit: Von Ealendil gelöst:
Funktionierendes Script
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
OnAutoItExitRegister("_Exit")
_GDIPlus_Startup(); Variablen ============================================================================
[/autoit] [autoit][/autoit] [autoit]Global $iWidth = 500, $iHeight = 600
[/autoit] [autoit][/autoit] [autoit]
Global $iX = 0, $iY = 0
Global $hBackground = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\background.png")
Global $balloon_red = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\balloon_red.png")
Global $balloon_green = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\balloon_green.png")
Global $balloon_blue = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\balloon_blue.png")
Global $balloon_yellow = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\balloon_yellow.png")
Global $balloon_pink = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\balloon_pink.png")
Global $figur = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\graphics\figur.png")
Global $balloonX = 50
Global $balloonY = 50
Global $figurX = 200
Global $figurY = 467
Global $figurWidth = 60
Global $figurHeight = 100
Global $Check; GUI ============================================================================
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("TrapTheBalloon", $iWidth, $iHeight, Default, Default)
[/autoit] [autoit][/autoit] [autoit]
$hWnd = WinGetHandle("TrapTheBalloon")
GUISetState()
GUISetOnEvent(-3, "_Exit"); GDI+ ============================================================================
[/autoit] [autoit][/autoit] [autoit]$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
[/autoit] [autoit][/autoit] [autoit]
;Erstmal das normale Grafik-Objekt erstellen.
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphic)
;Statt uns mit dem normalen Frontbuffer zufrieden zu geben, erstellen wir erstmal eine
;Bitmap, mit Bezug auf unser Grafikobjekt.
$hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
;Nachdem unser Bitmap erstellt ist, holen wir uns den Graphics Context. Dieser
;wird von uns verwendet, um darin zu zeichnen
_GDIPlus_GraphicsSetSmoothingMode($hBackbuffer, 2)
_GDIPlus_GraphicsClear($hGraphic); While-Schleife ============================================================================
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_PAINT, "_WM_PAINT")While 1
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsClear($hBackbuffer)
[/autoit] [autoit][/autoit] [autoit]
; Superradierer benutzen um alten Backbuffer zu löschen
_GDIPlus_GraphicsSetSmoothingMode($hBackbuffer, 5)
_GDIPlus_GraphicsDrawImageRect($hBackbuffer, $hBackground, 0, 0, $iWidth, $iHeight)
if not $Check Then _GDIPlus_GraphicsDrawImage($hBackbuffer, $balloon_red, 50, $balloonY)
$balloonY += 7
If $balloonY > $iHeight Then $balloonY = -75
_GDIPlus_GraphicsDrawImage($hBackbuffer, $figur, $figurX, $figurY)
If _IsPressed("25") And $figurX >= 5 Then $figurX -= 10
If _IsPressed("27") And $figurX + 79 <= 495 Then $figurX += 3
if _IsBetween($balloonY+49, $figurY + 20, $figurY + 30) And _IsBetween($balloonX, $figurX, $figurX + 20) Then $Check = 1
_WinAPI_RedrawWindow($hWnd, 0, 0, $RDW_INTERNALPAINT)
; WM_PAINT wird nur aufgerufen, wenn alle Berechnungen fertig sind!
; In WM_PAINT wird selbst nichts berechnet, oder gezeichnet. diese Funktion wird nur das
; Bitmap-Objekt in das Grafik-Objekt übertragen.
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, $iX, $iY, $iWidth, $iHeight)
; _GDIPlus_GraphicsDrawImageRect() überträgt den Backbuffer in den Frontbuffer.
; Der erste Parameter ist unser Frontbuffer (Grafik Objekt).
; Der zweite ist unsere Bitmap, welche ja als BackBuffer fungiert.
; Darauf folgt der Abschnitt den man übertragen will.
; i.d.R. ist es 0, 0 für X und Y koordinaten, und die GUI Breite und Höhe für
; Width und Height. Kommt natürlich immer drauf an, wie groß euer Grafikobjekt ist,
; und ob ihr den vollen Teil zeichnen wollt.
ToolTip($balloonY & " " & $balloonX & @CRLF & $figurY & " " & $figurX)
WEnd; Funktionen ============================================================================
[/autoit] [autoit][/autoit] [autoit]Func _WM_PAINT()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, $iX, $iY, $iWidth, $iHeight)
EndFunc ;==>_WM_PAINTFunc _Exit() ; Clean up resources
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDispose($hGraphic) ; Grafikobjekt auflösen
_GDIPlus_BitmapDispose($hBitmap); Bitmap auflösen
_GDIPlus_ImageDispose($balloon_red); Bild auflösen
_GDIPlus_ImageDispose($balloon_green); Bild auflösen
_GDIPlus_ImageDispose($balloon_blue); Bild auflösen
_GDIPlus_ImageDispose($balloon_yellow); Bild auflösen
_GDIPlus_ImageDispose($balloon_pink); Bild auflösen
_GDIPlus_ImageDispose($hBackground); Bild auflösen
_GDIPlus_ImageDispose($figur); Bild auflösen
_GDIPlus_Shutdown() ; GDI+ Engine beenden
Exit
EndFunc ;==>_ExitFunc _IsBetween($A, $Min, $Max)
[/autoit]
Return $A >= $Min And $A <= $Max
EndFunc ;==>_IsBetween -
Hey HopFail, (netter name btw
)Schön das du zu uns gefunden hast. Viel Spaß hier im Forum.
Ich habe übrigends auch mit 13 Angefangen - und sie was ich jetzt bin
Super-Moderator von der größten deutschen AutoIt Webseite 
Gruß
Max
Netter Name? Ich habe nur nen Namen für ein Spiel (Urban Terror) gesucht und mir ist der eingefallen (eigentlich ist er seeehr einfallslos).
Naja, ich hab eher mit 12 mit AutoIt angefangen, aber das spielt ja auch keine Rolle
Hallo Hop Fail,
Wir hatten ja schon öfter miteinander zu tun aber trotzdem ein Herzliches Wilkommen
mfg Ubuntu
Danke nochmals für deine Hilfe
An alle (anderen):
Danke für eure "herzliche" Aufnahme.
-
Spoiler anzeigen
ZitatFehlermeldung
Es ist ein Fehler aufgetreten, der uns bisher nicht bekannt ist. Eine genaue Fehlermeldung haben wir bereits per E-Mail erhalten. Wir werden uns den Fehler ansehen und ggf. beheben. Bitte versuchen Sie die Operation zu wiederholen. In der Regel tritt ein solcher Fehler nicht wiederholt auf.
Sollte der Fehler wiederholt auftreten, senden Sie uns bitte eine E-Mail an service@kicktipp.de mit einer möglichst genauen Beschreibung der Schritte, die Sie unternommen haben.
-
Erstmal chillen

Du gehst in deinen [AutoIt-Ordner] (Standard: C:\Program Files\AutoIt3) und gehst auf [Au3Info.exe].
Falls der Titel des sich öffnenden Fensters mit "(Frozen)" anfängt, drückst du [Strg+Alt+F].
Dann gehst du auf den Reiter [Control] (ich bin mir nicht sicher, hab es nie gemacht), gehst mit der Maus auf den Button und liest in Au3Info die benötigten Daten aus.Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. -
Hey Leute

Nun ja, ich bin vielleicht nicht ganz so neu hier, aber ich möchte mich auch mal vorstellen.
Meinen Namen möchte ich nicht sagen, das ist mir zu persönlich
Ich bin 13 Jahre alt (1997), spiele gerne Fußball.
Ich mache alles Mögliche mit dem Computer (vom Spielen über Coding (AutoIt) bis hin zum Bearbeiten von Bildern und Videos).
Demzufolge möchte ich mein Abitur machen und Informatik studieren.
Ich bin eigentlich noch ein Anfänger in Sachen AutoIt und bin gerade dabei, mir GDI+ anzueignen.
Letztendlich hoffe ich, dass ihr weiterhin eine so tolle Community bleibt und mir dabei helft, AutoIt zu lernen.
Natürlich bin ich ebenfalls bereit, jeden Neuling zu unterstützen.
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. -
Hallo Leute,
Ich überlege schon seit längerem ein Gdi Plus Tutorial zu schreiben.
Dewegen starte ich mal eine Abstimmung.
Ja, bitte
-
Wär nett, wenn du den Code soweit reistellst, das man das ausführen kann...
Mach die Sache einfacher
Und bitte mit Spoilern

-
-
[Systemsteuerung > Sounds, Sprachein-/ausgabe und Audiogeräte > Sounds und Audiogeräte > Registerkarte 'Stimme']
Guck dich da mal ein bisschen um

-
#thema abweichung -.-
#vote 4 closed
Hast du dein Bild wegen mir geändert?

Als Threadersteller kannst du auch sagen: "Bitte closen!"