Png in GUI laden

  • Ich würde gerne eine Png Datei in meine GUI laden.
    Ich bekomme das Bild zwar dargestellt jedoch ist es leicht größer.
    Mein Bild ist 59x59 und in der Gui wird es aber mit ca 72x72 dargestellt

    Mit anderen Bilder genau dasselbe. Sie sind immer etwas größer als sie sollten
    Weiß jemand warum?

    Edit :
    Irgendwie spinnt der Autoit Code hier im forum

    Deshalb hier der Code auf pastebin

    http://pastebin.de/21705

    3 Mal editiert, zuletzt von Aldi (30. Dezember 2011 um 12:20)

  • [autoit]

    Func GUICtrlCreatePng($hWnd, $sPath, $iX, $iY)
    _GDIPlus_Startup()
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend, $hGUI
    Local $hImage = _GDIPlus_ImageLoadFromFile($sPath), $iWidth = _GDIPlus_ImageGetWidth($hImage), $iHeight = _GDIPlus_ImageGetHeight($hImage)
    $hGUI = GUICreate("", $iWidth, $iHeight, $iX, $iY, 0x80000000, BitOR(0x40, 0x80000), $hWnd)
    $cLabel = GUICtrlCreateLabel("", 0, 0, $iWidth, $iHeight)
    GuiCtrlSetState (-1 , $GUI_DISABLE)
    GUICtrlSetBkColor(-1, -2)
    GUISetState(@SW_SHOWNOACTIVATE, $hGUI)
    $hScrDC = _WinAPI_GetDC(0)
    $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
    $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
    $tSize = DllStructCreate("int X;int Y")
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", $iWidth)
    DllStructSetData($tSize, "Y", $iHeight)
    $tSource = DllStructCreate("int X;int Y")
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate("byte Op;byte Flags;byte Alpha;byte Format")
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", 255)
    DllStructSetData($tBlend, "Format", 1)
    _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)
    GUISwitch($hWnd)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()
    Return SetError(0,$hGUI,$cLabel)
    EndFunc ;==>GUICtrlCreatePng

    [/autoit]

    Hoffe du meinst es so (google <3)

  • UEZ
    hatte das schonmal gefunden hat aber iwie nich geklappt :p

    Naja jab grad mit dem Control selber etwas gefailed :D
    Hab vergessen GuiSetState() zumachen um die eigentliche GUI anzuzeigen und somit war nur das png zu sehen ...