Meinst du nicht, dass das dieser Thread ein bisschen alt ist? ![]()
Edit: Müssen jetzt alle Nachholen meine Funktion zu loben? ![]()
Meinst du nicht, dass das dieser Thread ein bisschen alt ist? ![]()
Edit: Müssen jetzt alle Nachholen meine Funktion zu loben? ![]()
Da gibt es viele Möglichkeiten...
[autoit]Switch $Var
Case 1 To 5
;Wert liegt zwischen 1 und 5
EndSwitch
If $Var >= 1 And $Var <= 5 Then ;Wert liegt zwischen 1 und 5
[/autoit]Meinst du vielleicht so etwas?
Zitat
Öhm... wie macht man das das andere downloaden können? ist ein ordner
Ähm meinst du als Dateianhang? ![]()
Zitatalso 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 ^^.
ZitatWas hast du für ein Betriebssystem ?
Die Frage meinst du nicht ernst, oder? ![]()
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
.
Ich hab hier mal ein paar Funktionen geschrieben, die dir vielleicht weiterhelfen. ![]()
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
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
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
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
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
Func _GetPointsDistance($iPointX1, $iPointY1, $iPointX2, $iPointY2)
Return Sqrt(($iPointX1 - $iPointX2) ^ 2 + ($iPointY1 - $iPointY2) ^ 2)
EndFunc ;==>_GetPointsDistance
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. ![]()
Wie oft müssen wir dich noch auf die Bearbeiten Funktion hinweisen?
Dieser Befehl
$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.
Ähm StringReplace?
ZitatIch versteh das nicht
Was können wir dann bitte noch tun?
Bitte hör mit den Doppelpostings auf.....
Was glaubst du wozu der Bearbeiten Knopf da ist?
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? ![]()
Zitatich 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? ![]()
Wie wäre es wenn die Resourcen auch noch freigegeben würden? ![]()
Pixelsearch ist wohl die unsicherste und langsamste Methode...
Das müsste funktionieren.
[autoit]StringMid($sString, 1, StringInstr($sString, "x") - 1)
[/autoit]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. ![]()
Das Bild verschwindet bei mir nicht, egal was ich mache... Außer ich minimiere es, dann müsste man es so machen.
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
Opt("MustDeclareVars", 1) ; 0=nein, 1=erfordert Deklaration
Opt("GUICloseOnESC", 1) ; 1=ESC beendet, 0=ESC schließt nicht
Global $GUI, $Logo_PNG, $hGraphic, $hBitmap, $hBuffer
[/autoit] [autoit][/autoit] [autoit]$GUI = GUICreate("Test-GDIPlus", 364, 290) ; <- Ohne Parameter!
GUISetState(@SW_SHOW)
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphic = _GDIPlus_GraphicsCreateFromHWND($GUI)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics(364, 290, $hGraphic)
$hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
$Logo_PNG = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\testbild.png")
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawImage($hBuffer, $Logo_PNG, 32, 6)
WM_PAINT()
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
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
Func WM_PAINT()
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 364, 290)
EndFunc
Und ich habe bis jetzt noch keine andere Lösung für so ein GDI+ basiertes Script gesehen.
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.