GUI - Eigenes Design

  • Hallo, ist es möglich eine GUI unsichtbar (sprich: Tranzparent) zu machen aber die beinhalteten Controls nicht?

    Ich hänge bei dieser überlegung ^^


    Ich möchte mir nämlich ein ganz anderes GUI Design zusammen setzen.


    Und noch ne Frage hinterher, unterstützt AutoIt Vektorgrafiken? - Wenn ja, mit welchen Befehlen muss ich arbeiten?


    Brauche quasi nur einen 'Leitpfaden'.

    Danke schonmal im Vorraus :D

    Einmal editiert, zuletzt von Yjuq (7. Juli 2012 um 13:52)

  • Ich hab' da ne Idee:
    Nimm mehrere Popup-GUI's und setz die Control's einzeln auf die GUI's und lass die Position durch ne Adlib-Funktion relativ zu einer "Head"-GUI bestimmen.

    IE kann doch *.svg (Oder wie auch immer die Vektorgrafiken heißen) anzeigen. Binde die doch einfach über ein embedded IE ein. ;)

    lg chess

  • Wozu die AdLib-Funktion? Einfach die Controls als Child-GUIs zur Main-GUI.

    Edit: Ich habs mal so gemacht. Eine GUI für den Background und eine GUI für die Controls und diese dann mit _WinAPI_SetLayeredWindowAttributes transparent machen mit der BG-Farbe von der Control-GUI.

    Einmal editiert, zuletzt von m-obi (7. Juli 2012 um 13:10)

  • So hab ichs mal gemacht. Nicht wundern ich hab aus meinem Script nur das rausgenomen für die Grafik.

    Spoiler anzeigen
    [autoit]

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

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

    Opt("GUIOnEventMode", 1)
    Opt("GUICloseOnESC", 0) ;1=ESC closes, 0=ESC won't close
    Opt("TrayMenuMode", 1)
    Opt("TrayAutoPause", 0) ;0=no pause, 1=Pause
    Opt("TrayOnEventMode", 1)

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

    Global $PosCtrl_Ref[3]
    Global $PosCtrl[4][2][2]
    Global $Wahl_Button[4][2]
    Global $Delete_Button[4][2]
    Global $pngSrcSettingsBK = "config.png"
    Global Const $AC_SRC_ALPHA = 1

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

    $PosCtrl_Ref[0] = 398 ; left (X)
    $PosCtrl_Ref[1] = 88 ; top (Y)
    $PosCtrl_Ref[2] = 41 ; left (X)

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

    $PosCtrl[0][0][0] = $PosCtrl_Ref[0] ; Programm Oben X
    $PosCtrl[0][0][1] = $PosCtrl_Ref[1] ; Programm Oben Y
    $PosCtrl[0][1][0] = $PosCtrl_Ref[0] ; Icon Oben X
    $PosCtrl[0][1][1] = $PosCtrl_Ref[1] + 40 ; Icon Oben Y
    $PosCtrl[1][0][0] = $PosCtrl_Ref[2] ; Programm Unten X
    $PosCtrl[1][0][1] = $PosCtrl_Ref[1] + 200 ; Programm Unten Y
    $PosCtrl[1][1][0] = $PosCtrl_Ref[2] ; Icon Unten X
    $PosCtrl[1][1][1] = $PosCtrl_Ref[1] + 240 ; Icon Unten Y
    $PosCtrl[2][0][0] = $PosCtrl_Ref[2] ; Programm Links X
    $PosCtrl[2][0][1] = $PosCtrl_Ref[1] + 100 ; Programm Links Y
    $PosCtrl[2][1][0] = $PosCtrl_Ref[2] ; Icon Links X
    $PosCtrl[2][1][1] = $PosCtrl_Ref[1] + 140 ; Icon Links Y
    $PosCtrl[3][0][0] = $PosCtrl_Ref[0] ; Programm Rechts X
    $PosCtrl[3][0][1] = $PosCtrl_Ref[1] + 100 ; Programm Rechts Y
    $PosCtrl[3][1][0] = $PosCtrl_Ref[0] ; Icon Rechts X
    $PosCtrl[3][1][1] = $PosCtrl_Ref[1] + 140 ; Icon Rechts Y

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

    _GDIPlus_Startup()

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

    #Region
    Global $Config_GUI = GUICreate("Einstellungen", 600, 450, -1, -1, $WS_POPUP, BitOR($WS_EX_CONTROLPARENT, $WS_EX_LAYERED))
    Global $hImageSettingsBK = _GDIPlus_ImageLoadFromFile($pngSrcSettingsBK)
    SetBitmap($Config_GUI, $hImageSettingsBK, 255)
    #EndRegion

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

    #Region
    Global $Config_GUI_Ctrl = GUICreate("", 600, 450, 0, 0, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Config_GUI)
    GUISetBkColor(0x585858)
    _WinAPI_SetLayeredWindowAttributes($Config_GUI_Ctrl, 0x585858)
    GUICtrlCreateButton("Weitere Einstellungen", 370, 300, 130, 30)
    GUICtrlCreateButton("OK", 57, 380, 100, 30)
    GUICtrlCreateButton("Beenden", 253, 380, 100, 30)
    GUICtrlSetOnEvent(-1, "_Exit")
    GUICtrlCreateButton("Info", 449, 380, 100, 30)

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

    For $i = 0 To 3
    GUICtrlCreateLabel("Programm:", $PosCtrl[$i][0][0] + 5, $PosCtrl[$i][0][1] - 7, 50, 15)
    GUICtrlSetColor(-1, 0xffffff)
    GUICtrlCreateLabel("Icon:", $PosCtrl[$i][1][0] + 5, $PosCtrl[$i][1][1] - 7, 50, 15)
    GUICtrlSetColor(-1, 0xffffff)
    $Wahl_Button[$i][0] = GUICtrlCreateButton("- Frei -", $PosCtrl[$i][0][0] + 58, $PosCtrl[$i][0][1] - 12, 80, 24)
    $Wahl_Button[$i][1] = GUICtrlCreateButton("- Frei -", $PosCtrl[$i][1][0] + 58, $PosCtrl[$i][1][1] - 12, 80, 24)
    $Delete_Button[$i][0] = GUICtrlCreateButton("", $PosCtrl[$i][0][0] + 143, $PosCtrl[$i][0][1] - 10, 20, 20, $BS_ICON)
    GUICtrlSetImage(-1, @ScriptDir & "\Ico\Bin\delete4.ico")
    $Delete_Button[$i][1] = GUICtrlCreateButton("", $PosCtrl[$i][1][0] + 143, $PosCtrl[$i][1][1] - 10, 20, 20, $BS_ICON)
    GUICtrlSetImage(-1, @ScriptDir & "\Ico\Bin\delete4.ico")
    Next
    #EndRegion

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

    GUISetState(@SW_SHOW, $Config_GUI)
    GUISetState(@SW_SHOW, $Config_GUI_Ctrl)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Exit()
    GUIDelete($Config_GUI)
    GUIDelete($Config_GUI_Ctrl)
    Exit
    EndFunc

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

    Func SetBitmap($hGUI, $hImage, $iOpacity)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend

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

    $hScrDC = _WinAPI_GetDC(0)
    $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
    $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
    DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", $iOpacity)
    DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
    _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
    _WinAPI_ReleaseDC(0, $hScrDC)
    _WinAPI_SelectObject($hMemDC, $hOld)
    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_DeleteDC($hMemDC)
    EndFunc ;==>SetBitmap

    [/autoit]