GUI mit $WS_POPUP GIF Bild Rand sollte unsichtbar sein und anstatt ist er weiss.

  • Guten abend.
    Hab folgendes Problemm:

    Mein Bild enthält Rand (ungleischmäßig), mit photoshop habe den ausgeschnitten und transparent gemacht und als .GIF datei gespeichert.
    Und zwar habe ich GUI erstellt und man seht den Transparenten Rand in weiss. Ich brauche aber sehr das er unsichtbar bleibt. bitte um hilfe.

    Hier ist auschnitt(funktionierbar):

    #Include <StaticConstants.au3>
    #Include <WinAPIEx.au3>
    #Include <WindowsConstants.au3>
    #include <GUIConstants.au3>

    $Width = 306
    $MainGUI = GUICreate("timer",$Width, 236,@DesktopWidth - $Width, 0,$WS_POPUP, $WS_EX_TOOLWINDOW)
    GUICtrlCreatePic(@ScriptDir & "\lll.gif",0,0, 0,0)

    $Exit = GUICtrlCreateButton("exit",387,337,100,25)
    GUISetState(@SW_SHOW)


    While 1
    Sleep(10)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Exit
    Exit
    EndSwitch
    WEnd

    Einmal editiert, zuletzt von Antoschka2 (28. Juni 2010 um 22:23)

  • Bild wurder zensiert ;)

    [autoit]

    #Include <StaticConstants.au3>
    #Include <WinAPIEx.au3>
    #Include <WindowsConstants.au3>
    #include <GUIConstants.au3>

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

    $Width = 306
    $MainGUI = GUICreate("timer",$Width, 236,@DesktopWidth - $Width, 0,$WS_POPUP, $WS_EX_TOOLWINDOW)
    GUICtrlCreatePic(@ScriptDir & "\lll.gif",0,0, 0,0)

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

    $Exit = GUICtrlCreateButton("exit",387,337,100,25)
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(10)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Exit
    Exit
    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Ich hatte das eigentlich so probiert aber das funzt leider nicht. Ist bestimmt nur nen kleiner Fehler drinne

    Spoiler anzeigen
    [autoit]


    #include <StaticConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    #include <GDIPlus.au3>

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

    $Width = 306
    $Height = 236

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

    $MainGUI = GUICreate("timer", $Width, $Height, @DesktopWidth - $width, 0, $WS_POPUP, $WS_EX_TOOLWINDOW)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup()
    $hBitmap = _WinAPI_CreateBitmap($Width, $Height, 1, 32)
    $oBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
    $hGraphic = _GDIPlus_ImageGetGraphicsContext($oBitmap)
    _GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFA0)

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

    $hTrans = ImageMakeTransparentBkGnd($oBitmap, $Width, $Height)

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

    $hImg = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\lll.gif")
    _GDIPlus_GraphicsDrawImage($hTrans, $hImg, 0, 0)

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

    _GDIPlus_ImageDispose($hImg)
    _WinAPI_DeleteObject($oBitmap)
    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_DeleteObject($hTrans)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()

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

    While 1
    Sleep(10)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    EndSwitch
    WEnd

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

    ;================Macht den Hintergrund Transparent, überall wo die farbe des pixels 1,1 ist===============
    Func ImageMakeTransparentBkGnd($hImage2, $GuiSizeX, $GuiSizeY)
    Local $hBitmap1, $Reslt, $width, $height, $stride, $format, $Scan0, $v_Buffer, $v_Value, $iColor

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

    $hBitmap1 = _GDIPlus_BitmapCloneArea($hImage2, 0, 0, $GuiSizeX, $GuiSizeY, $GDIP_PXF32ARGB)

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

    $iColor = GDIPlus_BitmapGetPixel($hBitmap1, 1, 1) ; Transparent color

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

    $Reslt = _GDIPlus_BitmapLockBits($hBitmap1, 0, 0, $GuiSizeX, $GuiSizeY, BitOR($GDIP_ILMREAD, $GDIP_ILMWRITE), $GDIP_PXF32ARGB)

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

    ;Get the returned values of _GDIPlus_BitmapLockBits ()
    $width = DllStructGetData($Reslt, "width")
    $height = DllStructGetData($Reslt, "height")
    $stride = DllStructGetData($Reslt, "stride")
    $format = DllStructGetData($Reslt, "format")
    $Scan0 = DllStructGetData($Reslt, "Scan0")

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

    For $i = 0 To $GuiSizeX - 1
    For $j = 0 To $GuiSizeY - 1
    $v_Buffer = DllStructCreate("dword", $Scan0 + ($j * $stride) + ($i * 4))
    $v_Value = DllStructGetData($v_Buffer, 1)
    If Hex($v_Value, 6) = Hex($iColor, 6) Then
    DllStructSetData($v_Buffer, 1, Hex($iColor, 6))
    EndIf
    Next
    Next

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

    _GDIPlus_BitmapUnlockBits($hBitmap1, $Reslt)

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

    Return $hBitmap1
    EndFunc ;==>ImageMakeTransparentBkGnd

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

    ;The GetPixel method gets the color of a specified pixel in this bitmap.
    Func GDIPlus_BitmapGetPixel($hBitmap, $iX, $iY)
    Local $tArgb, $pArgb, $aRet
    $tArgb = DllStructCreate("dword Argb")
    $pArgb = DllStructGetPtr($tArgb)
    $aRet = DllCall($ghGDIPDll, "int", "GdipBitmapGetPixel", "hwnd", $hBitmap, "int", $iX, "int", $iY, "ptr", $pArgb)
    Return "0x" & Hex(DllStructGetData($tArgb, "Argb"))
    EndFunc ;==>GDIPlus_BitmapGetPixel

    [/autoit]
  • irgendwie sehe ich nicht den fehler :(. Gibts da niemanden der noch helfen könnte?

  • Hi,

    das hättest Du auch locker mit einem Blick in die Hilfe herausfinden können ...

    Spoiler anzeigen
    [autoit]

    #Include <StaticConstants.au3>
    ;~ #Include <WinAPIEx.au3>
    #Include <WindowsConstants.au3>
    #include <GUIConstants.au3>

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

    Global $IDC_PICTURE, $IDC_EXIT, $MainGUI

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

    $Width = 306
    $MainGUI = GUICreate("timer", _
    $Width, 236, @DesktopWidth - $Width, 0, _
    $WS_POPUP, BitOR ($WS_EX_TOOLWINDOW, $WS_EX_LAYERED))

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

    $IDC_PICTURE = GUICtrlCreatePic(@ScriptDir & "\lll.gif", _
    0, 0, 0, 0, _
    BitOR ($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS), _
    $GUI_WS_EX_PARENTDRAG)

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

    $IDC_EXIT = GUICtrlCreateButton("exit", 130, 200, 60, 25)

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

    GUICtrlSetState ($IDC_EXIT, $GUI_ONTOP)

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

    GUISetState(@SW_SHOW)

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

    While TRUE
    Switch GUIGetMsg()
    Case $IDC_EXIT
    ExitLoop
    EndSwitch
    WEnd

    [/autoit]


    Gruß
    Greenhorn