Автор Тема: [Элементы GUI] Лупа поверх игры для помощи в прицеливании  (Прочитано 865 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dima1337 [?]

  • Осваивающий
  • **
  • Сообщений: 183
  • Репутация: 21
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Доброго времени суток.
Возникла такая необходимость но даже не знаю как подобное реализовать.
Нужно прозрачное GUI окно в котором поверх игры будет отображаться увеличенная часть экрана на которой прицел...
Как на фото.



Правильный вопрос - полдела!

Русское сообщество AutoIt


Оффлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 800
  • Репутация: 140
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0

Помечен как лучший ответ пользователем Dima1337 Отправлен Декабрь 27, 2017, 15:17:06

Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 403
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Например
Код: AutoIt [Выделить]
#include <WinAPI.au3>
#include <WinAPIGdi.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("TrayAutoPause", 0)
Opt("GUIOnEventMode", 1)
HotKeySet("{ESC}", "_Exit")

Global $hGDI32, $hDC_GUI, $hDC_DESK
$hGDI32 = DllOpen("GDI32.dll")
OnAutoItExitRegister("_OnExit")

Global $iZoomW = 200, _
        $iZoomH = 100, _
        $iZoomX = @DesktopWidth / 2 - $iZoomW / 2, _
        $iZoomY = @DesktopHeight / 2 - $iZoomH / 2, _
        $iZoomStep = 3
Global $hGUI, _
        $sTitle, _
        $iW = $iZoomW * $iZoomStep, _
        $iH = $iZoomH * $iZoomStep, _
        $iX = 0, _
        $iY = 0, _
        $iStyle = $WS_POPUP, _
        $iExStyle = BitOR($WS_EX_TOPMOST, $WS_EX_TRANSPARENT, $WS_EX_TOOLWINDOW)

$hGUI = GUICreate($sTitle, $iW, $iH, $iX, $iY, $iStyle, $iExStyle)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
$hDC_GUI = _WinAPI_GetDC($hGUI)
$hDC_DESK = _WinAPI_GetDC(0)
;_WinAPI_SetStretchBltMode($hDC_GUI, $STRETCH_HALFTONE) ;Используйте чтобы убрать пикселизацию (дополнительная нагрузка)
;_WinAPI_SetBrushOrg($hDC_GUI, 0, 0)  ;Используйте чтобы убрать пикселизацию (дополнительная нагрузка)
WinSetTrans($hGUI, Null, 255)
GUISetState()

While Sleep(10)
    _StretchBlt($hDC_GUI, 0, 0, $iW, $iH, $hDC_DESK, $iZoomX, $iZoomY, $iZoomW, $iZoomH, $SRCCOPY, $hGDI32)
WEnd

Func _StretchBlt($hDestDC, $iXDest, $iYDest, $iWidthDest, $iHeightDest, $hSrcDC, $iXSrc, $iYSrc, $iWidthSrc, $iHeightSrc, $iRop, $vGDI32 = "GDI32.dll")
    If $vGDI32 = Default Then $vGDI32 = "GDI32.dll"
    Local $aRet = DllCall($vGDI32, "BOOL", "StretchBlt", _
            "HANDLE", $hDestDC, _
            "INT", $iXDest, _
            "INT", $iYDest, _
            "INT", $iWidthDest, _
            "INT", $iHeightDest, _
            "HANDLE", $hSrcDC, _
            "INT", $iXSrc, _
            "INT", $iYSrc, _
            "INT", $iWidthSrc, _
            "INT", $iHeightSrc, _
            "DWORD", $iRop)
    If @error Then Return SetError(@error, @extended, False)

    Return $aRet[0]
EndFunc   ;==>_StretchBlt

Func _OnExit()
    _WinAPI_ReleaseDC(0, $hDC_DESK)
    _WinAPI_ReleaseDC($hGUI, $hDC_GUI)
    GUIDelete($hGUI)
    DllClose($hGDI32)
EndFunc   ;==>_OnExit

Func _Exit()
    Exit
EndFunc   ;==>_Exit

« Последнее редактирование: Декабрь 27, 2017, 01:17:45 от Tempo »

Русское сообщество AutoIt

Re: [Элементы GUI] Лупа поверх игры для помощи в прицеливании
« Ответ #2 Отправлен: Декабрь 26, 2017, 23:52:30 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
5108 Просмотров
Последний ответ Апрель 06, 2011, 10:22:13
от Yashied
16 Ответов
11448 Просмотров
Последний ответ Август 26, 2011, 09:58:19
от Redline
0 Ответов
2710 Просмотров
Последний ответ Август 24, 2011, 15:06:04
от Yashied
5 Ответов
3346 Просмотров
Последний ответ Июнь 10, 2012, 11:40:53
от lazarxxx
6 Ответов
5176 Просмотров
Последний ответ Сентябрь 30, 2012, 23:10:13
от WSWR
5 Ответов
4830 Просмотров
Последний ответ Январь 06, 2013, 19:57:21
от madmasles
8 Ответов
3457 Просмотров
Последний ответ Январь 24, 2013, 11:43:11
от Exhale
5 Ответов
2983 Просмотров
Последний ответ Май 28, 2014, 18:07:59
от madmasles
0 Ответов
1454 Просмотров
Последний ответ Декабрь 13, 2015, 05:18:10
от Latoid
4 Ответов
638 Просмотров
Последний ответ Август 15, 2017, 14:24:20
от mv6677