Weisse Pixel Transparent ?

  • Hallo Gemeinde ich habe nur mal eine kleine Theoretische Frage :
    ist es möglich wenn ich ein bild als hintergrund benute das alle pixel die im hinteren bereich dieses bildes weiss sind beim start des scriptes transparent angezeigt werden ? wenn ja gibt es da schon eine Praktische anwendung welche ich mir als beispiel ansehen könnte ?

    MFG Eistee

  • Ähm ich finde leider nichts in dem genannten beitrag welches von nutzen wäre...
    ich denke mal es wäre sinnvoller gleich zu sagen um was es im edeffekt geht :
    und zwar möchte ich eine Gui in Form eines X machen und es soll natürlich nur das X zu sehen sein und ich kann mich daran erinnern das transparenz ja nicht funktioniert waäre das also in irgendeine form realisierbar ?

  • Chrisatack hat ein script um ein pic transparent in die gui zubekommen und transparent bekommst du es mit irfanview
    das ist doch das was du willst oder verstehe ich es falsch

  • Ähm ich finde leider nichts in dem genannten beitrag welches von nutzen wäre...
    ich denke mal es wäre sinnvoller gleich zu sagen um was es im edeffekt geht :
    und zwar möchte ich eine Gui in Form eines X machen und es soll natürlich nur das X zu sehen sein und ich kann mich daran erinnern das transparenz ja nicht funktioniert waäre das also in irgendeine form realisierbar ?

    Wie machst du das X? Ein Bild?

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Du könntest auch die Form der GUI wie ein X machen, also kein Rechteck, sondern ein X....
    bsp aus der Hilfe: _WinAPI_SetWindowRgn()

    Spoiler anzeigen
    [autoit]

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

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

    ; get height of window title and width of window frame - may be different when XP theme is ON/OFF
    Global $htit = _WinAPI_GetSystemMetrics($SM_CYCAPTION)
    Global $frame = _WinAPI_GetSystemMetrics($SM_CXDLGFRAME)

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

    $gui = GUICreate("Test Windows regions", 350, 210)
    $btn_default = GUICtrlCreateButton("Default region", 100, 30, 150)
    $btn_round = GUICtrlCreateButton("Round region", 100, 60, 150)
    $btn_buble = GUICtrlCreateButton("Buble region ", 100, 90, 150)
    $btn_transparent = GUICtrlCreateButton("Transparent region", 100, 120, 150)
    $btn_exit = GUICtrlCreateButton("Exit", 100, 150, 150)
    GUISetState(@SW_SHOW)

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

    $pos = WinGetPos($gui) ; get whole window size (no client size defined in GUICreate)
    Global $width = $pos[2]
    Global $height = $pos[3]

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $btn_exit
    ExitLoop

    Case $msg = $btn_default
    $rgn = _WinAPI_CreateRectRgn(0, 0, $width, $height)
    _WinAPI_SetWindowRgn($gui, $rgn)

    Case $msg = $btn_round
    $rgn = _WinAPI_CreateRoundRectRgn(0, 0, $width, $height, $width / 3, $height / 3)
    _WinAPI_SetWindowRgn($gui, $rgn)

    Case $msg = $btn_buble
    $rgn1 = _WinAPI_CreateRoundRectRgn(0, 0, $width / 2, $height / 2, $width / 2, $height / 2) ; left-top
    $rgn2 = _WinAPI_CreateRoundRectRgn($width / 2, 0, $width, $height / 2, $width / 2, $height / 2) ; right-top
    _WinAPI_CombineRgn($rgn1, $rgn1, $rgn2, $RGN_OR)
    _WinAPI_DeleteObject($rgn2)
    $rgn2 = _WinAPI_CreateRoundRectRgn(0, $height / 2, $width / 2, $height, $width / 2, $height / 2) ; left-bottom
    _WinAPI_CombineRgn($rgn1, $rgn1, $rgn2, $RGN_OR)
    _WinAPI_DeleteObject($rgn2)
    $rgn2 = _WinAPI_CreateRoundRectRgn($width / 2, $height / 2, $width, $height, $width / 2, $height / 2) ; right-bottom
    _WinAPI_CombineRgn($rgn1, $rgn1, $rgn2, $RGN_OR)
    _WinAPI_DeleteObject($rgn2)
    $rgn2 = _WinAPI_CreateRoundRectRgn(10, 10, $width - 10, $height - 10, $width, $height) ; middle
    _WinAPI_CombineRgn($rgn1, $rgn1, $rgn2, $RGN_OR)
    _WinAPI_DeleteObject($rgn2)
    _WinAPI_SetWindowRgn($gui, $rgn1)

    Case $msg = $btn_transparent
    _GuiHole($gui, 40, 40, 260, 170)

    EndSelect
    WEnd

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

    ; make inner transparent area but add controls
    Func _GuiHole($h_win, $i_x, $i_y, $i_sizew, $i_sizeh)
    Local $outer_rgn, $inner_rgn, $combined_rgn

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

    $outer_rgn = _WinAPI_CreateRectRgn(0, 0, $width, $height)
    $inner_rgn = _WinAPI_CreateRectRgn($i_x, $i_y, $i_x + $i_sizew, $i_y + $i_sizeh)
    $combined_rgn = _WinAPI_CreateRectRgn(0, 0, 0, 0)
    _WinAPI_CombineRgn($combined_rgn, $outer_rgn, $inner_rgn, $RGN_DIFF)
    _WinAPI_DeleteObject($outer_rgn)
    _WinAPI_DeleteObject($inner_rgn)
    _AddCtrlRegion($combined_rgn, $btn_default)
    _AddCtrlRegion($combined_rgn, $btn_round)
    _AddCtrlRegion($combined_rgn, $btn_buble)
    _AddCtrlRegion($combined_rgn, $btn_transparent)
    _AddCtrlRegion($combined_rgn, $btn_exit)
    _WinAPI_SetWindowRgn($h_win, $combined_rgn)
    EndFunc ;==>_GuiHole

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

    ; add control's area to given region
    ; respecting also window title/frame sizes
    Func _AddCtrlRegion($full_rgn, $ctrl_id)
    Local $ctrl_pos, $ctrl_rgn

    $ctrl_pos = ControlGetPos($gui, "", $ctrl_id)
    $ctrl_rgn = _WinAPI_CreateRectRgn($ctrl_pos[0] + $frame, $ctrl_pos[1] + $htit + $frame, _
    $ctrl_pos[0] + $ctrl_pos[2] + $frame, $ctrl_pos[1] + $ctrl_pos[3] + $htit + $frame)
    _WinAPI_CombineRgn($full_rgn, $full_rgn, $ctrl_rgn, $RGN_OR)
    _WinAPI_DeleteObject($ctrl_rgn)
    EndFunc ;==>_AddCtrlRegion

    [/autoit]
  • Hatte auch mal was mit einfacher Transparenz gebastelt: Hier ein simples Beispiel

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $hgui = GUICreate("", 300, 170, -1, -1, $WS_POPUP)
    GUISetBkColor(0xFF)

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

    $graphic = GUICtrlCreateGraphic(275, 5, 20, 20)

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

    Local $sPic = ''
    $sPic &= '16711680|16711680|16711680|16711680|16711680|||||||||||16711680|16711680|16711680|16711680|16711680' & @LF
    $sPic &= '16711680|16711680|16711680|16711680|16711680|16711680|16711680||||||||16711680|16711680|16711680|16711680|16711680|16711680' & @LF
    $sPic &= '16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680||||||16711680|16711680|16711680|16711680|16711680|16711680|16711680' & @LF
    $sPic &= '16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|||16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680' & @LF
    $sPic &= '16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680' & @LF
    $sPic &= '16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680' & @LF
    $sPic &= '||16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680' & @LF
    $sPic &= '|||16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|' & @LF
    $sPic &= '||||16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680||' & @LF
    $sPic &= '|||||16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680||||' & @LF
    $sPic &= '||||16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680||||' & @LF
    $sPic &= '|||16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|||' & @LF
    $sPic &= '|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|||' & @LF
    $sPic &= '16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|||' & @LF
    $sPic &= '16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680||' & @LF
    $sPic &= '16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680||16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|' & @LF
    $sPic &= '16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|||16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|' & @LF
    $sPic &= '16711680|16711680|16711680|16711680|16711680|16711680||||||16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680' & @LF
    $sPic &= '16711680|16711680|16711680|16711680|16711680||||||||16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680' & @LF
    $sPic &= '16711680|16711680|16711680|16711680|16711680||||||||16711680|16711680|16711680|16711680|16711680|16711680|16711680|16711680'

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

    Local $aPic = _StringToArray2D($sPic)

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

    Local $LastCol = ""
    For $j = 0 To UBound($aPic, 2) - 1
    For $i = 0 To UBound($aPic, 1) - 1
    If $aPic[$i][$j] = "" Then ContinueLoop
    If $LastCol <> $aPic[$i][$j] Then
    GUICtrlSetGraphic(-1, 8, $aPic[$i][$j])
    $LastCol = $aPic[$i][$j]
    EndIf
    GUICtrlSetGraphic(-1, 18, $i, $j)
    Next
    Next

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

    GUISetState()

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

    AdlibEnable('_changeBk', 1000)

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

    Do
    $msg = GUIGetMsg()
    If $msg = $graphic Then
    Exit MsgBox(0,"","Ende")
    EndIf
    Until $msg = -3

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

    Func _changeBk()
    GUISetBkColor(Random(0, 16777215, 1))
    EndFunc

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

    Func _StringToArray2D($sArray)
    ;funkey
    Local $i_extended, $ar_Row, $ar = StringSplit($sArray, @LF, 2)
    StringReplace($ar[0], "|", @LF)
    $i_extended = @extended + 1
    Local $ar2D[$i_extended][UBound($ar)]
    For $i = 0 To UBound($ar2D, 2) - 1
    $ar_Row = StringSplit($ar[$i], "|", 2)
    For $j = 0 To UBound($ar2D, 1) - 1
    $ar2D[$j][$i] = $ar_Row[$j]
    Next
    Next
    Return $ar2D
    EndFunc ;==>_StringToArray2D

    [/autoit]
  • Wenn in der GUI bilder sind dann gehen buttons wenn man das Pic mit dem state $GUI_DISABLE versieht
    mit gdi glaube ich aber nicht dass man dieses bild disablen kann