Bild auf Mausposition setzen

  • Versuche mal das Bild mit GUICtrlSetState($bild, $GUI_ONTOP) in den Vordergund zu holen.

    Wow, das klappt hammer vielen dank. Im grunde ist jetzt mein Problem gelöst. Doch es tritt ein neues auf:
    In den Bild ist eigentlich transparenz aber im Programm wird das Transparente weiß, was ein ziemlich hässliges viereck um das Bild ergibt. Kann ich die Transparent irgendwie beibehalten oder erzeugen?

    Gruß,
    Eddy

  • Um das zu verhindern mußt du mit PNG Bildern arbeiten. Schau dir das 3. Beispiel von GUICtrlCreatePic an, da wird beschrieben wie das mit PNG geht. Soviel ich weiß haut es mit der Transparenz bei JPG, GIF und BMP nicht hin.

    Habe diesmal ein png Bild genommen. (Das selbe und auch mit Transparenz) Und trotzdem wird das transparente zu weiß... Könnte ich da was machen?

    • Offizieller Beitrag

    Du kannst mir nicht erzählen, das du schon das 3. Beispiel analysiert und umgesetzt hast.

    Hier das Beispiel:

    Spoiler anzeigen
    [autoit]

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

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

    Global $hGUI, $hImage, $hGraphic, $hImage1

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

    ; Create GUI
    $hGUI = GUICreate("Show PNG", 250, 250)

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

    ; Load PNG
    image
    _GDIPlus_StartUp()
    $hImage
    = _GDIPlus_ImageLoadFromFile("..\GUI\Torus.png")
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)

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

    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
    GUISetState()

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

    ; Loop
    until user exits
    do
    until GUIGetMsg() =
    $GUI_EVENT_CLOSE

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

    ; Clean up
    resources
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_ShutDown()

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

    ; Draw PNG image
    Func
    MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0,
    0)
    _WinAPI_RedrawWindow($hGUI, 0,
    0,
    $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]


    GUICtrlCreatePIc alleine reicht da nicht mehr. Du mußt mit GDI+ arbeiten.

  • WUHEEY!
    habs hingekriegt mit:

    [autoit]

    _GDIPlus_StartUp()
    $hImage = _GDIPlus_ImageLoadFromFile(@tempdir & "/yang.png")
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Form1)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, $maus[0], $maus[1])

    [/autoit]

    Einmal editiert, zuletzt von MrEddy (1. Januar 2010 um 02:17)

  • Mit Photoshop kannst du easy PNG's machen, welche einen transparenten Hintergrund haben können :)
    Wenn du diese in die GUi lädst, sind die auch transparent! :)