hi leute,
ich steh vor einem rätsel,
habe ein overlay gebaut, soweit alles okay,
wenn ich aber ein bild anzeigen will wird es größer angezeigt als es ist. (ImageGetHeight ist korrekt)
DrawRect und alle anderen Funktionen zeichnen korrekt.
hat jemand ne idee?
Code
Func GUI_DrawPic($filepath, $cx, $cy, $update=True)
Local $x = Number($cx)
Local $y = Number($cy)
local $hImage = _GDIPlus_ImageLoadFromFile($filepath)
ConsoleWrite("GUI_DrawPic: " & String($update) & ", Height: " & _GDIPlus_ImageGetHeight ( $hImage ) & @CRLF)
_GDIPlus_GraphicsDrawImage($GUI_hGraphics, $hImage, $x, $y)
If $update Then
_WinAPI_UpdateLayeredWindow($GUI_hWnd, $GUI_hDC_Window, 0, $GUI_pSize, $GUI_hDC_Buffer, $GUI_pSource, 0, $GUI_pBlend, 2)
_GUIOnTop()
EndIf
EndFunc
Func GUI_DrawRect($cx,$cy, $bw,$bh, $wid=1, $color=0xffffffff, $update=True)
Local $x = Number($cx)
Local $y = Number($cy)
Local $w = Number($bw)
Local $h = Number($bh)
Local $width = Number($wid)
Local $col = Execute($color)
Global $GUI_hPen = _GDIPlus_PenCreate( $col, $width)
_GDIPlus_GraphicsDrawRect($GUI_hGraphics, $x, $y, $w, $h, $GUI_hPen)
If $update Then
_WinAPI_UpdateLayeredWindow($GUI_hWnd, $GUI_hDC_Window, 0, $GUI_pSize, $GUI_hDC_Buffer, $GUI_pSource, 0, $GUI_pBlend, 2)
_GUIOnTop()
EndIf
EndFunc
Alles anzeigen
EDIT: hier noch die funktion zum erstellen des Overlay:
Code
Func GUI_Start()
Global $GUI_DesktopWidth = @DesktopWidth
Global $GUI_DesktopHeight = @DesktopHeight
ConsoleWrite("GUI_Start h,w = " & $GUI_DesktopWidth & ", " & $GUI_DesktopHeight & @CRLF)
Global $GUI_Show = True
Global $GUI_iGUIWidth = $GUI_DesktopWidth
Global $GUI_iGUIHeight = $GUI_DesktopHeight
Global $GUI_vUser32DLL = DllOpen("User32.dll")
Global $GUI_tSize = DllStructCreate($tagSIZE)
Global $GUI_pSize = DllStructGetPtr($GUI_tSize)
DllStructSetData($GUI_tSize, "X", $GUI_iGUIWidth)
DllStructSetData($GUI_tSize, "Y", $GUI_iGUIHeight)
Global $GUI_tSource = DllStructCreate($tagPOINT)
Global $GUI_pSource = DllStructGetPtr($GUI_tSource)
Global $GUI_tBlend = DllStructCreate($tagBLENDFUNCTION)
Global $GUI_pBlend = DllStructGetPtr($GUI_tBlend)
DllStructSetData($GUI_tBlend, "Alpha", 255)
DllStructSetData($GUI_tBlend, "Format", 1)
_GDIPlus_Startup()
Global $GUI_hDummy = GUICreate("")
Global $GUI_hWnd = GUICreate("", $GUI_iGUIWidth, $GUI_iGUIHeight, 0, 0, BitOR(0x80000000, 0x08000000), BitOR(0x00080000, 0x00000008), $GUI_hDummy)
GUISetState()
Global $GUI_hDC_Window = _WinAPI_GetDC($GUI_hWnd)
Global $GUI_hDC_Buffer = _WinAPI_CreateCompatibleDC($GUI_hDC_Window)
Global $GUI_hBitmap_Buffer = _WinAPI_CreateCompatibleBitmap($GUI_hDC_Window, $GUI_iGUIWidth, $GUI_iGUIHeight)
_WinAPI_SelectObject($GUI_hDC_Buffer, $GUI_hBitmap_Buffer)
Global $GUI_hGraphics = _GDIPlus_GraphicsCreateFromHDC($GUI_hDC_Buffer)
_GDIPlus_GraphicsSetSmoothingMode($GUI_hGraphics, 2)
Global $GUI_hBrush = _GDIPlus_BrushCreateSolid(0xffffffff)
Global $GUI_hFormat = _GDIPlus_StringFormatCreate()
Global $GUI_hFamily = _GDIPlus_FontFamilyCreate("Arial")
Global $GUI_hFont = _GDIPlus_FontCreate($GUI_hFamily, 24, 1)
Global $GUI_tLayout = _GDIPlus_RectFCreate(100, 100, $GUI_DesktopWidth, $GUI_DesktopHeight) ;3840 × 2160
Global $GUI_aInfo = _GDIPlus_GraphicsMeasureString($GUI_hGraphics, "", $GUI_hFont, $GUI_tLayout, $GUI_hFormat)
Global $GUI_hPen = _GDIPlus_PenCreate( 0xffffffff, 1)
Global $GUI_Activated = 1
Global $GUI_Show = True
_WinAPI_UpdateLayeredWindow($GUI_hWnd, $GUI_hDC_Window, 0, $GUI_pSize, $GUI_hDC_Buffer, $GUI_pSource, 0, $GUI_pBlend, 2)
_GUIOnTop()
EndFunc
Alles anzeigen