passwd
Новичок
- Сообщения
- 30
- Репутация
- 0
Обновление вопроса. Вот так выглядит моя форма. На фоне ставится скриншот другого окна. Сверху накладывается картинка. Как сделать так, чтобы картинка, которую помещаю поверх фона можно было перемещать мышкой и масштабировать колесом мышки?
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <ScreenCapture.au3>
Global Const $AC_SRC_ALPHA = 1
$Form1_1 = GUICreate("Document", 701, 671, -1, -1)
GUISetBkColor(0xFFFFFF)
$Pic1 = GUICtrlCreatePic("", 8, 8, 409, 657)
$Button1 = GUICtrlCreateButton("Take Picture", 424, 8, 161, 33)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
Generate()
EndSwitch
WEnd
Func Generate()
Local $hBMP, $hBitmap, $hGraphic, $WindowToCapture
WinActivate("Notepad")
$WindowToCapture = ControlGetHandle("Notepad", "", "[CLASS:Edit; INSTANCE:1]")
$hBMP = _ScreenCapture_CaptureWnd ( '', $WindowToCapture,4,4,400,470,False)
; Initialize GDI+ library
_GDIPlus_Startup()
$PicHandle = GUICtrlGetHandle($Pic1)
$myGuiHandle = ControlGetHandle("Document", "", $PicHandle)
$TransparentButtonTest = GUICreate("", 0, 0, 390, 130, $WS_EX_MDICHILD, $WS_EX_LAYERED, $myGuiHandle)
$hImageButton = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\2-f.png")
SetBitMap($TransparentButtonTest, $hImageButton, 255)
GUISetState()
WinActivate("Document")
; Draw bitmap to GUI
$hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBMP)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND(GUICtrlGetHandle($Pic1))
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 100)
; Clean up resources
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_BitmapDispose($hBitmap)
_WinAPI_DeleteObject($hBMP)
; Shut down GDI+ library
_GDIPlus_Shutdown()
EndFunc
Func SetBitmap($hGUI, $hImage, $iOpacity)
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", $AC_SRC_ALPHA)
_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)
EndFunc ;==>SetBitmap