1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Freaky

Beiträge von Freaky

  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 21. Januar 2012 um 05:18

    Hey,
    vielen Dank, dass du dir die Zeit genommen hast um dir das anzugucken.
    Das Hintergrundbild wird nun so angezeigt, wie ich mir das gewünscht habe. Leider spinnt nun der Button.
    Wenn ich das Script starte, ist alles ok. Nach ca. 2 Sekunden, geht der Hover des Buttons and und bleibt auch an. Und $aCoord[4] zeigt mir dauerhaft 0 an, als ob es kein Object in der Form findet. Nicht einmal die IE Form.
    Leider kann ich mir auch nicht erklären, wieso $aCoord[4] nichts findet. Gibt es dafür eine simple Begründung oder ist da ein Fehler?
    mfg Freaky :)

  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 17. Januar 2012 um 03:24

    Hey,
    ich brauche Leider immer noch Hilfe an meinem Problem. Es ist mitlerweile fast 1 Monat her, dass ich an meinem Problem sitze und ich habe bis jetzt immer noch kein Weg gefunden :(
    Bitte hilft mir.
    mfg Freaky

  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 11. Januar 2012 um 05:16

    Moinsen,
    leider sitze ich immer noch an dem Problem, weil das Hintergrundbild ja falsch angezeigt wird.
    Hätte da jemand vielleicht jetzt dazu noch eine Lösung? Es ist wichtig fuer mich.
    mfg Freaky

  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 7. Januar 2012 um 06:15

    Hey, vielen Dank ich idiot ... :D
    Ok zum IE Problem. Bei mir wurde es plötzlich auch gerade angezeigt. Leider, wenn ich reinklicke komme ich zu dem Object hinter meiner Form.
    Ich habe das nun gelöst, indem ich das IE Object auf eine neue Form gepackt habe und die Form als Child an die erste Form getan.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiButton.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    ;~ #Include <WinAPI.au3>
    #include <IE.au3>

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

    Global $hGUI, $hImage, $hGraphic, $hImage
    Global Const $SC_DRAGMOVE = 0xF012
    Global $iImagePfad = @ScriptDir & "\Bilder\", $i

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

    Global Const $IMAGE_BITMAP = 0
    Global Const $STM_SETIMAGE = 0x0172

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

    _GDIPlus_StartUp()
    $hImage = _GDIPlus_ImageLoadFromFile($iImagePfad & "background.png")
    ;~ $hImage_Pic1 = _GDIPlus_ImageLoadFromFile($iImagePfad & "start_2.png")
    ;~ $hImage_Pic2 = _GDIPlus_ImageLoadFromFile($iImagePfad & "start_1.png")

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

    $iWidth = _GDIPlus_ImageGetWidth($hImage)
    $iHeight = _GDIPlus_ImageGetHeight($hImage)

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

    $hHBMP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    ;~ $hHBMP_Pic1 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage_Pic1)
    ;~ $hHBMP_Pic2 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage_Pic2)

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

    $oIE=_IECreateEmbedded()

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

    ; Create GUI
    $hGUI = GUICreate("Test", $iWidth, $iHeight, -1, -1, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST)
    $idBackgroundPic = GUICtrlCreatePic("", 0, 0, $iWidth, $iHeight)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    GUISetState(@SW_SHOW, $hGUI)
    $idPic = GUICtrlCreatePic("",50,50,126,38)
    $iButton = _CreateButton ($iImagePfad & "start_1.png",$iImagePfad & "start_2.png",100,100)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idBackgroundPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBMP))

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

    SetTransparentBitmap($hGUI, $hImage)

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

    GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")

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

    _CreateIEObject($hGUI,$oIE,200,50,200,200)
    _IENavigate($oIE, 'http://google.de')

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

    $isHover = False
    $mem = True

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $iButton[1]
    MsgBox(262144, "Test", "Test")
    EndSwitch
    $aCoord = GUIGetCursorInfo($hGUI)
    If $aCoord[4] = $iButton[1] Then
    If Not $isHover Then
    GUICtrlSendMsg($iButton[1], $STM_SETIMAGE, $IMAGE_BITMAP, $iButton[2])
    $isHover = True
    $mem = True
    EndIf
    Else
    If $mem Then
    GUICtrlSendMsg($iButton[1], $STM_SETIMAGE, $IMAGE_BITMAP, $iButton[3])
    $mem = False
    $isHover = False
    EndIf
    EndIf

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

    WEnd

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

    ; Clean up resources
    _GDIPlus_ImageDispose($hImage)
    ;~ _GDIPlus_ImageDispose($hImage_Pic1)
    ;~ _GDIPlus_ImageDispose($hImage_Pic2)
    _WinAPI_DeleteObject($hHBMP)
    ;~ _WinAPI_DeleteObject($hHBMP_Pic1)
    ;~ _WinAPI_DeleteObject($hHBMP_Pic2)
    _GDIPlus_ShutDown()
    Exit

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

    Func _CreateIEObject ($iForm,$iVar,$iX,$iY,$iW,$iH)
    $iIEForm = GUICreate ("",$iX,$iY,$iW,$iH,$WS_POPUP, $WS_EX_MDICHILD, $iForm)
    GUICtrlCreateObj ($iVar,0,0,$iW,$iH)
    GUISetState (@SW_SHOW,$iIEForm)
    EndFunc

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

    Func _CreateButton ($iPicture1, $iPicture2, $iX, $iY)
    $bImage_Pic1 = _GDIPlus_ImageLoadFromFile($iPicture1)
    $bImage_Pic2 = _GDIPlus_ImageLoadFromFile($iPicture2)

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

    $bHBMP_Pic1 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($bImage_Pic1)
    $bHBMP_Pic2 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($bImage_Pic2)

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

    $bWidth = _GDIPlus_ImageGetWidth($bImage_Pic1)
    $bHeight = _GDIPlus_ImageGetHeight($bImage_Pic1)

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

    $bPicture = GUICtrlCreatePic("",$iX,$iY,$bWidth,$bHeight)

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

    Local $bReturn[5] = [3,$bPicture,$bHBMP_Pic1,$bHBMP_Pic2]
    Return $bReturn
    EndFunc

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

    Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
    EndFunc ;==>_WM_LBUTTONDOWN

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

    Func SetTransparentBitmap($hGUI, $hImage, $iOpacity = 0xFF)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
    $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", 1)
    _WinAPI_UpdateLayeredWindow($hGUI, 0, 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]


    Und hier der Code, für die Leute die es vielleicht irgend wann einmal brauchen :)
    mfg Freaky


    Edit:
    Ok, mir ist was aufgefallen. Wenn ich die Form, ueber was nicht weißes mache, dann sieht man den Schatten nicht.
    [Blockierte Grafik: http://s3.imgimg.de/uploads/background904b22d6png.png]
    Ich habe ja bereits mit UEZ Hilfe ein Hintergrund hinbekommen und ein Button ebenfalls oben drauf. Dies funktioniert supper mit dem Schatten:
    [Blockierte Grafik: http://s3.imgimg.de/uploads/background2672aa147png.png]
    Ich brauche jetzt aber bei dem zweiten Beispiel den Button als Bilder und nicht normaler Button.
    Hier ist noch einmal der Code, der so ist wie ich es brauche aber nur der Button Falsch ist.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    #include <GDIpProgress.au3>
    #include <IE.au3>
    #include <Misc.au3>
    #include <GuiButton.au3>

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

    Global $hGUI, $hImage, $hGraphic, $hImage
    Global Const $SC_DRAGMOVE = 0xF012
    Global Const $IMAGE_BITMAP = 0
    Global Const $STM_SETIMAGE = 0x0172
    Global $iImagePfad = @ScriptDir & "\Bilder\", $i

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

    _GDIPlus_Startup()
    $hImage = _GDIPlus_ImageLoadFromFile($iImagePfad & "background.png")
    $hHBMP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    $iWidth = _GDIPlus_ImageGetWidth($hImage)
    $iHeight = _GDIPlus_ImageGetHeight($hImage)

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

    $hImage_Button = _GDIPlus_ImageLoadFromFile($iImagePfad & "start_0.jpg")
    $hHBMP_Button = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage_Button)

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

    $oIE = _IECreateEmbedded()

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

    ; Create GUI
    $hGUI = GUICreate("Test", $iWidth, $iHeight, -5000, -5000, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST)
    $hGUI_child = GUICreate("", $iWidth, $iHeight, -5000, -5000, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST + $WS_EX_MDICHILD, $hGUI)
    GUISetBkColor(0, $hGUI_child)

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

    $idBackgroundPic = GUICtrlCreatePic("", 0, 0, $iWidth, $iHeight)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    GUISetState(@SW_SHOW, $hGUI)
    GUISetState(@SW_SHOW, $hGUI_child)
    SetTransparentBitmap($hGUI, $hImage)
    _WinAPI_SetLayeredWindowAttributes($hGUI_child, 0x00, 0xff)

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

    _WinAPI_DeleteObject(GUICtrlSendMsg($idBackgroundPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBMP))

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

    $iButton1 = GUICtrlCreateButton("hallo", 50, 50, 134, 33,$BS_BITMAP)
    $iButton2 = _GuiCtrlCreatePic($hGUI_child, $iImagePfad & "\start_1.jpg", 100, 100)
    ;~ $iButton3 = _GuiCtrlCreatePic($hGUI, $iImagePfad & "\start_0.jpg", 200, 100)
    ;~ GUICtrlCreatePic ($iImagePfad & "\start_1.jpg",50,50,143,33)

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

    ;~ GUICtrlCreateObj ($oIE,50,50,100,100)
    ;~ _IENavigate($oIE, 'http://google.de')

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

    GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")

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

    WinMove($hGUI, "", (@DesktopWidth / 2) - ($iWidth / 2), (@DesktopHeight / 2) - ($iHeight / 2))
    WinMove($hGUI_child, "", (@DesktopWidth / 2) - ($iWidth / 2), (@DesktopHeight / 2) - ($iHeight / 2))

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $iButton2[1]
    _WinAPI_DeleteObject(GUICtrlSendMsg($iButton2[1], $BM_SETIMAGE, $IMAGE_BITMAP, $hHBMP_Button))
    _WinAPI_DeleteObject(GUICtrlSendMsg($iButton1, $BM_SETIMAGE, $IMAGE_BITMAP, $hHBMP_Button))
    EndSwitch

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

    If _ButtonHover($hGUI_child, $iButton2) Then
    _WinAPI_DeleteObject(GUICtrlSendMsg($iButton2[1], $BM_SETIMAGE, $IMAGE_BITMAP, $hHBMP_Button))
    EndIf
    WEnd

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

    ; Clean up resources
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    Exit

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

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

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

    Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
    EndFunc ;==>_WM_LBUTTONDOWN

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

    Func SetTransparentBitmap($hGUI, $hImage, $iOpacity = 0xFF)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
    $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", 1)
    _WinAPI_UpdateLayeredWindow($hGUI, 0, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
    _WinAPI_ReleaseDC(0, $hScrDC)
    _WinAPI_SelectObject($hMemDC, $hOld)
    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_DeleteDC($hMemDC)
    EndFunc ;==>SetTransparentBitmap

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

    Func _GuiCtrlCreatePic($gGui, $iPicture, $iX = 0, $iY = 0)
    $gImage = _GDIPlus_ImageLoadFromFile($iPicture)
    $gWidth = _GDIPlus_ImageGetWidth($gImage)
    $gHeight = _GDIPlus_ImageGetHeight($gImage)

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

    $iGui = GUICreate("", $gWidth, $gHeight, $iX, $iY, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $gGui)
    $iLabel = GUICtrlCreateLabel("", 0, 0, $gWidth, $gHeight)
    GUISetBkColor(0, $iGui)
    GUISetState(@SW_SHOW, $iGui)
    SetTransparentBitmap($iGui, $gImage)

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

    Local $iReturn[6] = [0, SetError(0, $iGui, $iLabel), $iX, $iY, $gWidth, $gHeight]

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

    Return $iReturn
    EndFunc ;==>_GuiCtrlCreatePic

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

    Func _ButtonHover($iGui, $iButton)
    $iMouse = GUIGetCursorInfo($iGui)
    If ($iMouse[0] >= $iButton[2]) And _
    ($iMouse[0] <= $iButton[2] + $iButton[4]) And _
    ($iMouse[1] >= $iButton[3]) And _
    ($iMouse[1] <= $iButton[3] + $iButton[5]) Then ; Button hover
    If (_IsPressed("01")) Then
    Return 2
    Else
    Return 1
    EndIf
    Else
    Return False
    EndIf
    EndFunc ;==>_ButtonHover

    [/autoit]


    Ich hoffe ihr könnt mir jetzt immer noch helfen :(
    mfg Freaky

  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 6. Januar 2012 um 21:59

    Heyho,
    leider sitze ich immer noch an diesem Problem.
    Mitlerweile geht es mir eher um das IE Object. Es ist einfach ein durchsitiges Loch und nicht die Internet Seite und ich finde keine Lösung dafuer ... :(
    Ich bitte euch um Hilfe.
    mfg Freaky

  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 3. Januar 2012 um 04:54

    Tut mir leid für das pushen, aber ich sitze immer noch an dem Problem und finde keine Lösung :(
    Ich bitte euch mir noch ein bishen dabei zu helfen :)
    mfg Freaky

  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 30. Dezember 2011 um 06:34

    Ok vielen dank. Das funktioniert auch supper :)
    Jetzt habe ich versucht das alles in eine Funktion zu machen, sodass mein ganzer Haufen kleiner wird. Leider wird nichts mehr angezeigt. Soweit ich richtig sehe, habe ich aber alles richtig uebernommen. Ich vermute es liegt daran, dass GUIGetCursorInfo das Bild garnicht mehr in der Form wieder findet. Warum dies so ist, habe ich gerade garkein blassen schimmer :(

    Dazu ist ein zweites Problem aufgetreten. Ich benöte am Ende ebenfalls ein IE Object in der Form. Leider wird das IE Object einfach ein Transparentes Fenster. Wobei, ich den Rand des IE Objectes weg haben möchte was hierbei ja schon geschehen ist :)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiButton.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    ;~ #Include <WinAPI.au3>
    #include <IE.au3>

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

    Global $hGUI, $hImage, $hGraphic, $hImage
    Global Const $SC_DRAGMOVE = 0xF012
    Global $iImagePfad = @ScriptDir & "\Bilder\", $i

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

    Global Const $IMAGE_BITMAP = 0
    Global Const $STM_SETIMAGE = 0x0172

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

    _GDIPlus_StartUp()
    $hImage = _GDIPlus_ImageLoadFromFile($iImagePfad & "background.png")
    ;~ $hImage_Pic1 = _GDIPlus_ImageLoadFromFile($iImagePfad & "start_2.png")
    ;~ $hImage_Pic2 = _GDIPlus_ImageLoadFromFile($iImagePfad & "start_1.png")

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

    $iWidth = _GDIPlus_ImageGetWidth($hImage)
    $iHeight = _GDIPlus_ImageGetHeight($hImage)

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

    $hHBMP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    ;~ $hHBMP_Pic1 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage_Pic1)
    ;~ $hHBMP_Pic2 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage_Pic2)

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

    $oIE=_IECreateEmbedded()

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

    ; Create GUI
    $hGUI = GUICreate("Test", $iWidth, $iHeight, -1, -1, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST)
    $idBackgroundPic = GUICtrlCreatePic("", 0, 0, $iWidth, $iHeight)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    GUICtrlCreateObj ($oIE,50,200,100,100)
    _IENavigate($oIE, 'http://google.de')

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

    GUISetState(@SW_SHOW, $hGUI)
    ;~ $idPic = GUICtrlCreatePic("",50,50,126,38)
    $iButton = _CreateButton ("start_1.png","start_1.png",100,100)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idBackgroundPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBMP))

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

    SetTransparentBitmap($hGUI, $hImage)

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

    GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")

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

    $isHover = False
    $mem = True

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $iButton[1]
    MsgBox(262144, "Test", "Test")
    EndSwitch
    $aCoord = GUIGetCursorInfo($hGUI)
    ToolTip ($aCoord[4],0,0)
    If $aCoord[4] = $iButton[1] Then
    If Not $isHover Then
    GUICtrlSendMsg($iButton[1], $STM_SETIMAGE, $IMAGE_BITMAP, $iButton[2])
    $isHover = True
    $mem = True
    EndIf
    Else
    If $mem Then
    GUICtrlSendMsg($iButton[1], $STM_SETIMAGE, $IMAGE_BITMAP, $iButton[3])
    $mem = False
    $isHover = False
    EndIf
    EndIf

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

    WEnd

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

    ; Clean up resources
    _GDIPlus_ImageDispose($hImage)
    ;~ _GDIPlus_ImageDispose($hImage_Pic1)
    ;~ _GDIPlus_ImageDispose($hImage_Pic2)
    _WinAPI_DeleteObject($hHBMP)
    ;~ _WinAPI_DeleteObject($hHBMP_Pic1)
    ;~ _WinAPI_DeleteObject($hHBMP_Pic2)
    _GDIPlus_ShutDown()
    Exit

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

    Func _CreateButton ($iPicture1, $iPicture2, $iX, $iY)
    $bImage_Pic1 = _GDIPlus_ImageLoadFromFile($iPicture1)
    $bImage_Pic2 = _GDIPlus_ImageLoadFromFile($iPicture2)

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

    $bHBMP_Pic1 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($bImage_Pic1)
    $bHBMP_Pic2 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($bImage_Pic2)

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

    $bWidth = _GDIPlus_ImageGetWidth($bImage_Pic1)
    $bHeight = _GDIPlus_ImageGetHeight($bImage_Pic1)

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

    $bPicture = GUICtrlCreatePic("",$iX,$iY,$bWidth,$bHeight)

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

    Local $bReturn[5] = [3,$bPicture,$bHBMP_Pic1,$bHBMP_Pic2]
    Return $bReturn
    EndFunc

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

    Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
    EndFunc ;==>_WM_LBUTTONDOWN

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

    Func SetTransparentBitmap($hGUI, $hImage, $iOpacity = 0xFF)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
    $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", 1)
    _WinAPI_UpdateLayeredWindow($hGUI, 0, 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]

    mfg Freaky

  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 29. Dezember 2011 um 07:03

    Hmm, nicht so ganz :(
    Habe es jetzt mal GUICtrlCreateButton mit GUICtrlCreatePic ersetzt und es wird kein Bild mehr angezeigt. Leider bringt es auch nichts, wenn ich ein Pfad zu einem Bild bei GUICtrlCreatePic einfüge.

  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 28. Dezember 2011 um 04:29

    Hey, das sieht ja schon richtig gut aus, danke.
    Problem ist jetzt aber, das man den Rand des Buttons sieht. Ich möchte halt, ein Bild als Button aber so das man nur das Bild sieht und nix anderes.
    Habe jetzt an deinem Beispiel versucht einfach den Button zu verkleiner, aber oben und links sieht man noch ein 1px weißen Rand >.>
    Und gibt es vll. eine etwas kleinere Lösung dafuer? Weil ich brauche 8 Buttons mit jeweils einen Hover und am Ende wird es etwas unübersichtlich :(
    Trotzdem supper Leistung danke. Bräuchte nur noch den linken und oberen Rand weg :)
    mfg Freaky

  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 26. Dezember 2011 um 04:53

    Hey danke :)
    Es ist fast geschafft. Ich brauche jetzt nur das Bild als Button und ein zweites Bild als Hover dafür. Nicht ein normalen Button und ein Hover drüber :)
    Leider bekomme ich es irgend wie nicht wirklich hin mit einer Funktion um ein Button als Bild darzustellen :(

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiButton.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    ;~ #Include <WinAPI.au3>
    #include <IE.au3>

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

    Global $hGUI, $hImage, $hGraphic, $hImage
    Global Const $SC_DRAGMOVE = 0xF012
    Global $iImagePfad = @ScriptDir & "\Bilder\", $i

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

    Global Const $IMAGE_BITMAP = 0
    Global Const $STM_SETIMAGE = 0x0172

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

    _GDIPlus_StartUp()
    $hImage = _GDIPlus_ImageLoadFromFile($iImagePfad & "background.png")
    $hImage_Button = _GDIPlus_ImageLoadFromFile($iImagePfad & "start_1.png")

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

    $iWidth = _GDIPlus_ImageGetWidth($hImage)
    $iHeight = _GDIPlus_ImageGetHeight($hImage)

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

    $hHBMP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    $hHBMP_Button = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage_Button)

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

    $oIE=_IECreateEmbedded()

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

    ; Create GUI
    $hGUI = GUICreate("Test", $iWidth, $iHeight, -1, -1, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST)
    $idBackgroundPic = GUICtrlCreatePic("", 0, 0, $iWidth, $iHeight)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $idButton = _GuiCtrlCreatePic ($hGUI,$iImagePfad & "start_2.png",50,50, $BS_BITMAP)
    GUISetState(@SW_SHOW, $hGUI)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idBackgroundPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBMP))

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

    SetTransparentBitmap($hGUI, $hImage)

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

    ;~ GUICtrlCreatePic ($iImagePfad & "\start_1.jpg",50,50,143,33)

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

    ;~ GUICtrlCreateObj ($oIE,50,50,100,100)
    ;~ _IENavigate($oIE, 'http://google.de')

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

    GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $idButton[1]
    _WinAPI_DeleteObject(GUICtrlSendMsg($idButton[1], $BM_SETIMAGE, $IMAGE_BITMAP, $hHBMP_Button))
    MsgBox (0,"","Ho ho ho")
    EndSwitch
    WEnd

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

    ; Clean up resources
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_ImageDispose($hImage_Button)
    _WinAPI_DeleteObject($hHBMP)
    _WinAPI_DeleteObject($hHBMP_Button)
    _GDIPlus_ShutDown()
    Exit

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

    Func _GuiCtrlCreatePic($gGui, $iPicture, $iX = 0, $iY = 0, $iStyle = "")
    $gImage = _GDIPlus_ImageLoadFromFile($iPicture)
    $gWidth = _GDIPlus_ImageGetWidth($gImage)
    $gHeight = _GDIPlus_ImageGetHeight($gImage)

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

    $iGui = GUICreate("", $gWidth, $gHeight, $iX, $iY, $WS_POPUP + $iStyle, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $gGui)
    $iLabel = GUICtrlCreateLabel("", 0, 0, $gWidth, $gHeight)
    GUISetBkColor(0, $iGui)
    GUISetState(@SW_SHOW, $iGui)
    SetTransparentBitmap($iGui, $gImage)

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

    Local $iReturn[6] = [0, SetError(0, $iGui, $iLabel), $iX, $iY, $gWidth, $gHeight]

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

    Return $iReturn
    EndFunc ;==>_GuiCtrlCreatePic

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

    Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
    EndFunc ;==>_WM_LBUTTONDOWN

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

    Func SetTransparentBitmap($hGUI, $hImage, $iOpacity = 0xFF)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
    $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", 1)
    _WinAPI_UpdateLayeredWindow($hGUI, 0, 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]

    mfg Freaky

    ps: Habe im Anhang noch das zweite Bild für den Hover drangemacht.

    Bilder

    • start_2.png
      • 4,5 kB
      • 118 × 31
  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 22. Dezember 2011 um 03:50

    Vielen Dank, leider sehe ich darin irgend wie kein nutzen. Wie hast du es dir vorgestellt?
    Ich sehe was es vermutlich macht. Leider kann ich damit das Bild nicht ändern um den Hovereffekt darzustellen.
    Ich brauche da doch ein etwas größeren Denkanstaoß :)
    mfg Freaky

  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 21. Dezember 2011 um 06:16

    Danke Marsi, aber leider geht deine UDF an meiner Form nicht. Ich vermute, dass mein Background es überlapt.
    Nun bin ich bei meiner Theorie weiter gekommen.
    Ich habe jetzt erfolgreich den Button in die Gui gebracht und ich kann jetzt auslesen ob draufgedrückt wird oder nur drauf ist auf dem Button.
    Das Problem ist jetzt, ich weiß nicht wie ich den Hover effekt erstellen kann.
    Da sind eigentlich 2 Probleme.
    1. Ich weiß nicht wie ich das Bild ändern kann.
    2. Ich weiß nicht wie ich die Abfrage richtig einbaue da ich ja vermutlich das Bild nicht einfach austauschen kann.

    Vorsicht bissig :D
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    #include <IE.au3>
    #include <Misc.au3>
    #include <Array.au3>

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

    Global $hGUI, $hImage, $hGraphic, $hImage, $gButtons[1][3]
    Global Const $SC_DRAGMOVE = 0xF012
    Global $iImagePfad = @ScriptDir & "\Bilder\", $i

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

    _GDIPlus_Startup()
    $hImage = _GDIPlus_ImageLoadFromFile($iImagePfad & "background.png")
    $iWidth = _GDIPlus_ImageGetWidth($hImage)
    $iHeight = _GDIPlus_ImageGetHeight($hImage)

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

    $oIE = _IECreateEmbedded()

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

    ; Create GUI
    $hGUI = GUICreate("Test", $iWidth, $iHeight, -5000, -5000, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST)
    $hGUI_child = GUICreate("", $iWidth, $iHeight, -5000, -5000, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST + $WS_EX_MDICHILD, $hGUI)
    GUISetBkColor(0, $hGUI_child)
    GUISetState(@SW_SHOW, $hGUI)
    GUISetState(@SW_SHOW, $hGUI_child)
    SetTransparentBitmap($hGUI, $hImage)
    _WinAPI_SetLayeredWindowAttributes($hGUI_child, 0x00, 0xff)

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

    $iButton1 = GUICtrlCreateButton("hallo", 50, 50, 134, 33)
    $iButton2 = _GuiCtrlCreatePic($hGUI_child, $iImagePfad & "\start_1.jpg", 100, 100)
    ;~ $iButton3 = _GuiCtrlCreatePic($hGUI, $iImagePfad & "\start_0.jpg", 200, 100)
    ;~ GUICtrlCreatePic ($iImagePfad & "\start_1.jpg",50,50,143,33)

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

    ;~ GUICtrlCreateObj ($oIE,50,50,100,100)
    ;~ _IENavigate($oIE, 'http://google.de')

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

    GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")

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

    WinMove($hGUI, "", (@DesktopWidth / 2) - ($iWidth / 2), (@DesktopHeight / 2) - ($iHeight / 2))
    WinMove($hGUI_child, "", (@DesktopWidth / 2) - ($iWidth / 2), (@DesktopHeight / 2) - ($iHeight / 2))

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch
    ToolTip(_ButtonHover($hGUI_child, $iButton2), 0, 0)

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

    WEnd

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

    ; Clean up resources
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    Exit

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

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

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

    Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
    EndFunc ;==>_WM_LBUTTONDOWN

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

    Func SetTransparentBitmap($hGUI, $hImage, $iOpacity = 0xFF)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
    $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", 1)
    _WinAPI_UpdateLayeredWindow($hGUI, 0, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
    _WinAPI_ReleaseDC(0, $hScrDC)
    _WinAPI_SelectObject($hMemDC, $hOld)
    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_DeleteDC($hMemDC)
    EndFunc ;==>SetTransparentBitmap

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

    Func _GuiCtrlCreatePic($gGui, $iPicture, $iX = 0, $iY = 0)
    $gImage = _GDIPlus_ImageLoadFromFile($iPicture)
    $gWidth = _GDIPlus_ImageGetWidth($gImage)
    $gHeight = _GDIPlus_ImageGetHeight($gImage)

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

    $iGui = GUICreate("", $gWidth, $gHeight, $iX, $iY, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $gGui)
    $iLabel = GUICtrlCreateLabel("", 0, 0, $gWidth, $gHeight)
    GUISetBkColor(0, $iGui)
    GUISetState(@SW_SHOW, $iGui)
    SetTransparentBitmap($iGui, $gImage)

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

    ;~ Local $iReturn[6] = [0, SetError(0, $iGui, $iLabel), $iX, $iY, $gWidth, $gHeight]

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

    Return SetError(0, $iGui, $iLabel)
    EndFunc ;==>_GuiCtrlCreatePic

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

    Func _ButtonCheckHover($iGui, $iButton)
    $iMouse = GUIGetCursorInfo($iGui)
    If ($iMouse[0] >= $iButton[2]) And _
    ($iMouse[0] <= $iButton[2] + $iButton[4]) And _
    ($iMouse[1] >= $iButton[3]) And _
    ($iMouse[1] <= $iButton[3] + $iButton[5]) Then ; Button hover
    If (_IsPressed("01")) Then
    Return 2
    Else
    Return 1
    EndIf
    Else
    Return False
    EndIf
    EndFunc ;==>_ButtonHover

    [/autoit]

    Ich hoffe ihr könnt mir helfen. Ich glaube sicher das mehrer Leute an sowas schon gescheitert sind :(
    mfg Freaky :)

  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 20. Dezember 2011 um 03:46

    Ach mist, sorry & danke. Dies habe ich übersehen zu löschen.
    Lösch die Zeile einfach bitte. Die wird zur Zeit nicht benötigt.
    Habe es auch oben gwegeditiert.
    mfg Freaky

  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 19. Dezember 2011 um 01:50

    Hmm, leider sitze ich immer noch an dem Problem.
    Vielleicht liegt es auch daran, dass ich nur Nachts antworten kann. Aber daran kann ich nichts ändern, wenn ich schon in den USA lebe >.>
    Also Leute, bitte hilft mir oder schickt den Thread an Leute weiter, die mir vielleicht helfen können :)
    mfg Freaky

  • Bilder als Buttons bei GDI+ Hintergrund Bild + Hover

    • Freaky
    • 18. Dezember 2011 um 02:57

    Hallo,
    ich möchte eine Form machen mit schönen Bildern etc.
    Das Problem ist, wenn ich ein Button als Bild darstelle mit GuiCtrlCreatePic hinbatsche, dann ist mein Hintergrundbild, dass mit GDI+ dargestellt wird, schwarz.
    Nun habe ich es versuchen mit dem selben weg, wie ich das Hintergrundbild dargestellt habe, meine Buttons darzustellen.
    Leider kommt das Bild irgend wo auf dem Desktop und nicht in der Gui obwohl ich ein Parent angegeben habe.

    Spoiler anzeigen
    [autoit]

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

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

    Global $hGUI, $hImage, $hGraphic, $hImage
    Global Const $SC_DRAGMOVE = 0xF012
    Global $iImagePfad = @ScriptDir & "\Bilder\", $i

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

    _GDIPlus_StartUp()
    $hImage = _GDIPlus_ImageLoadFromFile($iImagePfad & "background.png")
    $iWidth = _GDIPlus_ImageGetWidth($hImage)
    $iHeight = _GDIPlus_ImageGetHeight($hImage)

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

    $oIE=_IECreateEmbedded()

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

    ; Create GUI
    $hGUI = GUICreate("Test", $iWidth, $iHeight, -5000, -5000, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST)
    $hGUI_child = GUICreate("", $iWidth, $iHeight, -5000, -5000, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST + $WS_EX_MDICHILD, $hGUI)
    GUISetBkColor(0, $hGUI_child)
    GUISetState(@SW_SHOW, $hGUI)
    GUISetState(@SW_SHOW, $hGUI_child)
    SetTransparentBitmap($hGUI, $hImage)
    _WinAPI_SetLayeredWindowAttributes($hGUI_child, 0x00, 0xff)

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

    GUICtrlCreateButton ("hallo",50,50,134,33)
    _GuiCtrlCreatePic ($hGUI_child,$iImagePfad & "\start_1.png",100,100)
    ;~ GUICtrlCreatePic ($iImagePfad & "\start_1.jpg",50,50,143,33)

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

    ;~ GUICtrlCreateObj ($oIE,50,50,100,100)
    ;~ _IENavigate($oIE, 'http://google.de')

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

    GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")

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

    WinMove ($hGUI,"",(@DesktopWidth/2)-($iWidth/2),(@DesktopHeight/2)-($iHeight/2))
    WinMove ($hGUI_child,"",(@DesktopWidth/2)-($iWidth/2),(@DesktopHeight/2)-($iHeight/2))

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch
    WEnd

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

    ; Clean up resources
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ShutDown()
    Exit

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

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

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

    Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
    EndFunc ;==>_WM_LBUTTONDOWN

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

    Func SetTransparentBitmap($hGUI, $hImage, $iOpacity = 0xFF)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
    $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", 1)
    _WinAPI_UpdateLayeredWindow($hGUI, 0, 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] [autoit][/autoit] [autoit]

    Func _GuiCtrlCreatePic ($gGui, $iPicture, $iX = 0, $iY = 0)
    $gImage = _GDIPlus_ImageLoadFromFile($iPicture)
    $gWidth = _GDIPlus_ImageGetWidth($hImage)
    $gHeight = _GDIPlus_ImageGetHeight($hImage)

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

    $iGui = GUICreate ("",$gWidth,$gHeight,$iX,$iY, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST, $gGui)
    GUISetBkColor(0, $iGui)
    GUISetState(@SW_SHOW, $iGui)
    SetTransparentBitmap($iGui, $gImage)
    EndFunc

    [/autoit]


    Bilder sind unten im Anhang.

    Ich hoffe ihr könnt mir helfen :)
    mfg Freaky

    PS: Wenn ihr es rausgefunden habt, und mir bei meinem zweiten Problem helfen könnt, liest bitte den Spoiler.

    Spoiler anzeigen

    Ich habe ein IE Object ausgeklammert. Weiß einer wie ich eine Webseite ohne den IE Object Rand darstellen kann? Also als ob die Webseite zu der Form gehört?

    Dateien

    Bilder.rar 6,96 kB – 257 Downloads
  • Backgroundbil mit runden Kannten & Schatten + normale Objecte drauflegen und benutzen

    • Freaky
    • 13. Dezember 2011 um 02:13

    Öhm, ich glaube du hast mich ziemlich falsch verstanden.
    Ich habe ein Bild mit runden Kannten und einem schönnen Schatten (das Bild, nicht die Form). Dieses Bild möchte ich nun als Hintergrundbild für eine Form verwenden. Dies sollte aber so funktionieren, dass ich immer noch weitere Objecte fehlerfrei benutzen kann.
    Ich hoffe du hast mich diesmal besser verstanden :)
    mfg Freaky

  • Backgroundbil mit runden Kannten & Schatten + normale Objecte drauflegen und benutzen

    • Freaky
    • 12. Dezember 2011 um 01:31

    Hallo,
    ich wurde gebeten für ein Freund ein kelines Script zu schreiben mit ein paar Bildern.
    Leider hat sein Backgroundbild runde Kannten und ein Schatten. Ich weiß, dass ich es mit normalen Befehlen nicht hinbekomme und ich weiß ebenfalls das ich GDI+ benutzen muss.
    Leider ist mir ebenfalls aufgefallen, dass ich keine normalen Objecte mehr verwenden kann wie z.B. ein IE Object, Buttons, Ladebalken, Inputs etc.
    Kennt einer eine Möglichkeit die es doch machbar läst? Wenn ja, dann wär es echt supper wenn ihr mir sagen könnt wie ich es anstellen kann (mit Beispielen wäre echt supper :)).
    mfg Freaky :P

  • Downloader erstellen

    • Freaky
    • 28. November 2011 um 06:23

    Hallo,
    ich möchte mir ein kelinen Downloader für erst einmal YouTube schreiben. Es soll mir einfach die .flv runterladen. Leider verzweifel ich schon den direkten Link zu finden vom Video.
    Wisst ihr wie ich es finde? Oder kennt ihr ein Tutorial dafür?
    mfg Freaky

  • WinHTTP + Proxy

    • Freaky
    • 28. November 2011 um 04:44

    Ah ok vielen Dank. Komisch das dein Proxy bei meinen Tests durchgefallen ist :/
    Nun funktioniert alles :)

  • WinHTTP + Proxy

    • Freaky
    • 27. November 2011 um 06:14

    Hey danke, dürfte ich erfahren welche Art dein Proxy ist?
    Dein Script funktioniert aber wenn ich überprüfen ob es HTTPS, Socks4 oder Socks5 ist, fliegt jeder Test von Proxifier durch.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™