Box zeichnen?

09/02/2010 17:55 zen90#1
Hallo elitepvpers!

Gibt es eine Möglichkeit eine Box mit auf eine bestimmte Farbe zu zeichnen? (mit pixelsearch coords rausfinden und dann in einem loop die box zeichnen) Die Box soll sich mitbewegen wenn der pixel sich bewegt (sollte mit PixelSearch möglich sein)

Brauche nur den command oder gelegentlich ein kleines Beispiel, kenne mich relativ gut mit AutoIt3 aus, nur fällt mir nicht ein wie ich das mit der Box hinbekomme. Hab schon gegoogelt, hat mir aber nicht weitergeholfen.

Danke im Vorraus.
09/02/2010 19:15 Shadow992#2
Quote:
Originally Posted by zen90 View Post
Hallo elitepvpers!

Gibt es eine Möglichkeit eine Box mit auf eine bestimmte Farbe zu zeichnen? (mit pixelsearch coords rausfinden und dann in einem loop die box zeichnen) Die Box soll sich mitbewegen wenn der pixel sich bewegt (sollte mit PixelSearch möglich sein)

Brauche eigentlich nur den command oder ein kleines Beispiel, kenne mich relativ gut mit AutoIt3 aus, nur fällt mir nicht ein wie ich das mit der Box hinbekomme. Hab schon gegoogelt, hat mir aber nicht weitergeholfen.

Danke im Vorraus.
GDI+ :
PHP Code:
_GDIPlus_GraphicsDrawRect 
Ich weiß nur nicht, ob PixelSearch schnell genug ist, aber das wirst du dann schon sehen. ;)
09/02/2010 19:52 zen90#3
Quote:
Originally Posted by Shadow992 View Post
GDI+ :
PHP Code:
_GDIPlus_GraphicsDrawRect 
Ich weiß nur nicht, ob PixelSearch schnell genug ist, aber das wirst du dann schon sehen. ;)
Ich versuchs mal, danke dafür.

EDIT: Hab mit GDI+ rumgespielt, habs geschafft eine box zu zeichnen, aber die box ist einfach ein rechteck das komplett gefüllt ist. Ich wollte eher dass es ungefähr so aussieht:
[Only registered and activated users can see links. Click Here To Register...]
09/02/2010 20:36 zen90#4
Hmm.. Wenn ich es mit Pixelsearch versuche, wird bei mir garkeine Box angezeigt.
09/02/2010 20:39 | Moep |#5
Quote:
Originally Posted by zen90 View Post
...Ich wollte eher dass es ungefähr so aussieht:
[Only registered and activated users can see links. Click Here To Register...]
Dann setz dir halt mit "_GDIPlus_GraphicsDrawLine " dein rechteck selbs zusammen.



Quote:
Originally Posted by zen90 View Post
Hmm.. Wenn ich es mit Pixelsearch versuche, wird bei mir garkeine Box angezeigt.
Zeig mal dein Script
09/02/2010 21:00 zen90#6
Quote:
Originally Posted by Shadow992 View Post
GDI+ :
PHP Code:
_GDIPlus_GraphicsDrawRect 
Ich weiß nur nicht, ob PixelSearch schnell genug ist, aber das wirst du dann schon sehen. ;)
Quote:
Originally Posted by | Moep | View Post
Dann setz dir halt mit "_GDIPlus_GraphicsDrawLine " dein rechteck selbs zusammen.
Wie geht das? Kenne mich leider mit GDI+ nicht aus.

Mein Script:
Code:
; TargetBox
Func _Box()
$Box = 1
While 1
If $Box = 1 then
    $coord = pixelSearch($x1, $y1, $x2, $y2, $color, $tolerance)
            If IsArray($coord) = 1 Then
			       _GDIPlus_GraphicsDrawRect($hGraphic, $coord[0], $coord[1], 100, 100, $hPen)
			       _GDIPlus_PenDispose($hPen)
			       _GDIPlus_GraphicsDispose($hGraphic)
            EndIf
    EndIf
Wend
EndFunc
09/02/2010 22:21 lolkop#7
du wirst mit pixelsearch niemals die nötige geschwindigkeit erreichen um nebenbei noch eine box um den pixel zu zeichnen -.-
09/02/2010 23:14 zen90#8
Naja, mir wäre es eigentlich egal wenn es zu langsam wäre. Ich will nur hinbekommen, eine Box um eine Farbe zu zeichnen.
09/03/2010 11:44 Shadow992#9
Quote:
Originally Posted by zen90 View Post
Naja, mir wäre es eigentlich egal wenn es zu langsam wäre. Ich will nur hinbekommen, eine Box um eine Farbe zu zeichnen.
Ich weiß nicht wo dein Problem ist, aber bei mir zeichnet das automatisch eine leere Box:
PHP Code:
#Include <GDIPlus.au3>
_Box("Unbenannt - Editor")
Func _Box($Fenstername)
    
$x1=0
    $x2
=1110
    $y1
=0
    $y2
=800
    $color
=0
    $tolerance
=1

    $Box 
1
    $hwnd
=WinGetHandle ($Fenstername )
    While 
1
        
If $Box 1 Then
            $coord 
PixelSearch($x1$y1$x2$y2$color$tolerance,1,$hwnd)
            If 
IsArray($coord) = 1 Then
                _GDIPlus_Startup 
()
                
$hGraphic=_GDIPlus_GraphicsCreateFromHWND ($hwnd)
                
_GDIPlus_GraphicsDrawRect($hGraphic$coord[0], $coord[1], 100100)
                
_GDIPlus_GraphicsDispose ($hGraphic)
                
_GDIPlus_Shutdown ()
            EndIf
        EndIf
    
WEnd
EndFunc   
;==>_Box 
09/03/2010 13:46 PenGuin :O#10
Wozu jedesmal ein GDI+ Startup?
Setz das einfach an den Anfang des Scriptes und das Shutdowm ans Ende und das Dispose auch, dann sparst du Performance und Zeit.
09/03/2010 16:11 zen90#11
Vielen Dank, es funktioniert.. ist es möglich das "global" zu machen? Also nicht nur für ein Fenster?
09/03/2010 18:07 KDeluxe#12
Einfach ein "ExitLoop" in die Schleife und die Funktion um ein paar Parameter erweitern.

Ich hab gleich mal ein Beispiel mit WinList hinzugefügt:
PHP Code:
#Include <GDIPlus.au3>

While True
    $WinList 
WinList()
    For 
$i 1 To $WinList[0][0]
        If 
$WinList[$i][0] <> "" Then
            
If BitAnd(WinGetState($WinList[$i][1]), 2Then
                _Box
($WinList[$i][0])
            EndIf
        EndIf
    
Next
WEnd

Func _Box
($WinName$Color 0$Tolerance 1$Step 1)
    
$WinPos WinGetPos($WinName)
    
$Left $WinPos[0]
    
$Right $Left $WinPos[2]
    
$Top $WinPos[1]
    
$Bottom $Top $WinPos[3]

    
$hWnd WinGetHandle($WinName)
    While 
True
        $Coord 
PixelSearch($Left$Top$Right$Bottom$Color$Tolerance$Step$hWnd)
        If 
Not @error Then
            _GDIPlus_Startup
()
            
$hGraphic=_GDIPlus_GraphicsCreateFromHWND($hWnd)
            
_GDIPlus_GraphicsDrawRect($hGraphic$Coord[0], $Coord[1], 100100)
            
_GDIPlus_GraphicsDispose($hGraphic)
            
_GDIPlus_Shutdown()
            
ExitLoop
        
EndIf
    
WEnd
EndFunc 
09/04/2010 11:39 zen90#13
Danke, das scheint aber fehlerhaft zu sein. Es zeichnet die box oft 10cm über dem Pixel.

Ist es möglich ein .png Bild zu zeichnen?
09/04/2010 13:10 | Moep |#14
Guck doch einfach in die Hilfe! Oder denkst du hier ham alle alle Befehle im Kopf, wir machen auch nichst anderes als in der Hilfe nach ner passenden Funktion zu suchen...
09/04/2010 14:34 zen90#15
Quote:
Originally Posted by | Moep | View Post
Guck doch einfach in die Hilfe! Oder denkst du hier ham alle alle Befehle im Kopf, wir machen auch nichst anderes als in der Hilfe nach ner passenden Funktion zu suchen...
Hab gesucht, und nichts gefunden, sonst würde ich ja nicht fragen. ^^