Lupe geht nicht! Fenster nicht transparent?

  • Hallo!

    Ich weiss nicht warum ich im kleinen Fenster nicht die Vergrösserung von der Lupe sehe?

    Kann mir jemand helfen?

    Spoiler anzeigen

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Include <Misc.au3>
    $dll = DllOpen("user32.dll")
    Opt("GUIOnEventMode", 1)
    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\besitzer\desktop\au3\lupe.kxf
    $Form1 = GUICreate("Form1", 422, 255, 286, 196)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
    $Slider1 = GUICtrlCreateSlider(32, 56, 150, 45)
    GUICtrlSetOnEvent(-1, "Slider1Change")
    $Slider2 = GUICtrlCreateSlider(32, 152, 150, 45)
    GUICtrlSetOnEvent(-1, "Slider2Change")
    $Input1 = GUICtrlCreateInput("", 224, 32, 150, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    GUICtrlSetOnEvent(-1, "Input1Change")
    $Label1 = GUICtrlCreateLabel("Koordinaten:", 224, 15, 64, 17)
    GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
    GUICtrlSetOnEvent(-1, "Label1Click")
    $Label2 = GUICtrlCreateLabel("x - Achse", 40, 40, 48, 17)
    GUICtrlSetOnEvent(-1, "Label2Click")
    $Label3 = GUICtrlCreateLabel("y - Achse", 40, 136, 48, 17)
    GUICtrlSetOnEvent(-1, "Label3Click")
    ;~ $Label4 = GUICtrlCreateLabel("", 224, 64, 150, 150)
    ;~ GUICtrlSetOnEvent(-1, "Label4Click")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###


    $Scale = 30
    $PixelSize = 5
    Dim $Lay[$Scale + 1][$Scale + 1]
    Dim $PosOld[2]


    For $x = 1 To $Scale
    For $y = 1 To $Scale
    $Lay[$x][$y] = GUICtrlCreateLabel("", 224, 64, 150, 150, BitOR($SS_RIGHT,$SS_BLACKRECT,$SS_WHITERECT))
    Next
    Next
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

    While 1
    $Pos = MouseGetPos()
    ;If $Pos[0] <> $PosOld[0] Or $Pos[1] <> $PosOld[1] Then
    For $x = 1 To $Scale
    For $y = 1 To $Scale
    $Pix = PixelGetColor($Pos[0] + $x - ($Scale / 2), $Pos[1] + $y - ($Scale / 2))
    GUICtrlSetBkColor($Lay[$x][$y], $Pix)
    Next
    Next
    $PosOld = $Pos
    ;EndIf
    If GUIGetMsg() = -3 Then Exit
    WEnd


    Func Form1Close()

    EndFunc
    Func Form1Maximize()

    EndFunc
    Func Form1Minimize()

    EndFunc
    Func Form1Restore()

    EndFunc
    Func Input1Change()

    EndFunc
    Func Label1Click()

    EndFunc
    Func Label2Click()

    EndFunc
    Func Label3Click()

    EndFunc
    Func Label4Click()

    EndFunc
    Func Slider1Change()

    EndFunc
    Func Slider2Change()

    EndFunc

  • Hallo Morrison,

    solange wie du schon dabei bist solltest du eigentlich wissen, dass man die AutoIt-Tags benutzen soll. Auch das bentzen von Tidy (in Scite CTRL-T drücken) macht ein SKript lesbarer.
    Aber jetzt zum eigentlichen Problem: Du skriptest im OnEvent-Modus benutzt aber in deiner Endlosschleife GuiGetMsg, Wie soll denn das funktionieren? Da bracht man sich nicht wundern, wenn man das Skript nicht beenden kan.
    Hier habe ich abgebrochen weiter zu schauen, bis hierher ist mir allerdings kein Ansatz für eine Lupe untergekommen. Eine Änderung habe ich vorgenommen und mit ;<======== markiert:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    $dll = DllOpen("user32.dll")
    Opt("GUIOnEventMode", 1)
    #region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\besitzer\desktop\au3\lupe.kxf
    $Form1 = GUICreate("Form1", 422, 255, 286, 196)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
    $Slider1 = GUICtrlCreateSlider(32, 56, 150, 45)
    GUICtrlSetOnEvent(-1, "Slider1Change")
    $Slider2 = GUICtrlCreateSlider(32, 152, 150, 45)
    GUICtrlSetOnEvent(-1, "Slider2Change")
    $Input1 = GUICtrlCreateInput("", 224, 32, 150, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
    GUICtrlSetOnEvent(-1, "Input1Change")
    $Label1 = GUICtrlCreateLabel("Koordinaten:", 224, 15, 64, 17)
    GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
    GUICtrlSetOnEvent(-1, "Label1Click")
    $Label2 = GUICtrlCreateLabel("x - Achse", 40, 40, 48, 17)
    GUICtrlSetOnEvent(-1, "Label2Click")
    $Label3 = GUICtrlCreateLabel("y - Achse", 40, 136, 48, 17)
    GUICtrlSetOnEvent(-1, "Label3Click")
    ;~ $Label4 = GUICtrlCreateLabel("", 224, 64, 150, 150)
    ;~ GUICtrlSetOnEvent(-1, "Label4Click")
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    $Scale = 30
    $PixelSize = 5
    Dim $Lay[$Scale + 1][$Scale + 1]
    Dim $PosOld[2]

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

    For $x = 1 To $Scale
    For $y = 1 To $Scale
    $Lay[$x][$y] = GUICtrlCreateLabel("", 224, 64, 150, 150, BitOR($SS_RIGHT, $SS_BLACKRECT, $SS_WHITERECT))
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT); <========== hierher verschoben war hinter den beiden Schleifen
    Next
    Next

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

    While 1
    $Pos = MouseGetPos()
    ;If $Pos[0] <> $PosOld[0] Or $Pos[1] <> $PosOld[1] Then
    For $x = 1 To $Scale
    For $y = 1 To $Scale
    $Pix = PixelGetColor($Pos[0] + $x - ($Scale / 2), $Pos[1] + $y - ($Scale / 2))
    GUICtrlSetBkColor($Lay[$x][$y], $Pix)
    Next
    Next
    $PosOld = $Pos
    ;EndIf
    If GUIGetMsg() = -3 Then Exit
    WEnd

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

    Func Form1Close()
    EndFunc ;==>Form1Close
    Func Form1Maximize()

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

    EndFunc ;==>Form1Maximize
    Func Form1Minimize()

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

    EndFunc ;==>Form1Minimize
    Func Form1Restore()

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

    EndFunc ;==>Form1Restore
    Func Input1Change()

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

    EndFunc ;==>Input1Change
    Func Label1Click()

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

    EndFunc ;==>Label1Click
    Func Label2Click()

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

    EndFunc ;==>Label2Click
    Func Label3Click()

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

    EndFunc ;==>Label3Click
    Func Label4Click()

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

    EndFunc ;==>Label4Click
    Func Slider1Change()

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

    EndFunc ;==>Slider1Change
    Func Slider2Change()

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

    EndFunc ;==>Slider2Change

    [/autoit]

    mfg autoBert

  • Wenn du ein gutes Beispiel für eine Bildschirmlupe sehen willst, guck mal in den AutoIt Ordner unter AutoIt3\Examples\GUI\Advanced\Zoom.au3
    Das ist garantiert schneller als der merkwürdige Ansatz mit den Labels.

    Wer andern eine Bratwurst brät
    der hat ein Bratwurstbratgerät.