Что нового

[Элементы GUI] Как нарисовать полупрозрачное перекрестие поверх всех окон?

c77669

Новичок
Сообщения
2
Репутация
0
Как можно нарисовать полупрозрачное перекрестие поверх всех окон на экране?
Что-то типа прицела необходимо, который будет включатся и выключатся при нажатии на хоткей.

http://fastpic.ru/view/62/2014/0527/097a477c6cc74d3c1761764c0b9f7632.jpeg.html
 

_dron_

Знающий
Сообщения
84
Репутация
8
посмотри пример в папке Autoit "*\AutoIt3\Examples\GUI\Advanced\AlphaBlend.au3"
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
c77669 [?]
Как можно нарисовать
Так можно (F1 - вкл/выкл, F2 - выход)
Код:
#include <WinAPI.au3>
#include <WindowsConstants.au3>

HotKeySet("{F1}", "Pause")
HotKeySet("{F2}", "Quit")

Global $draw = True

$Frame = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT, $WS_EX_LAYERED))
GUISetBkColor(0xFFFFE1)
_WinAPI_SetLayeredWindowAttributes($Frame, 0xFFFFE1, 0, $LWA_COLORKEY)
GUISetState()

Global $hDC = _WinAPI_GetWindowDC($Frame)
Global $hPen = _WinAPI_CreatePen(0, 1, 0xFF0000)
Global $obj_orig = _WinAPI_SelectObject($hDC, $hPen)

Do
  If $draw Then
    WinSetOnTop($Frame, "", 1)
    _WinAPI_DrawLine($hDC, 0, @DesktopHeight / 2, @DesktopWidth, @DesktopHeight / 2)
    _WinAPI_DrawLine($hDC, @DesktopWidth / 2, 0, @DesktopWidth / 2, @DesktopHeight)
  EndIf
Until Not Sleep(30)

Func Pause()
  $draw = Not $draw
  _WinAPI_InvalidateRect(0)
EndFunc

Func Quit()
  _WinAPI_SelectObject($hDC, $obj_orig)
  _WinAPI_DeleteObject($hPen)
  _WinAPI_ReleaseDC($Frame, $hDC)
  _WinAPI_InvalidateRect(0)
  Exit
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
c77669 [?]
Без излишеств так сказать
Без излишеств - это примерно так
Код:
#include <WindowsConstants.au3>

HotKeySet("{F1}", "Pause")
HotKeySet("{F2}", "Quit")

Global $draw = True

$Horz = GUICreate("", @DesktopWidth, 1, 0, @DesktopHeight / 2, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
GUISetBkColor(0x0000FF)
GUISetState()
$Vert = GUICreate("", 1, @DesktopHeight, @DesktopWidth / 2, 0, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
GUISetBkColor(0x0000FF)
GUISetState()

Do
  If $draw Then
    WinSetOnTop($Horz, "", 1)
    WinSetOnTop($Vert, "", 1)
  EndIf
Until Not Sleep(100)

Func Pause()
  $draw = Not $draw
  If $draw Then
    GUISetState(@SW_SHOW, $Horz)
    GUISetState(@SW_SHOW, $Vert)
  Else
    GUISetState(@SW_HIDE, $Horz)
    GUISetState(@SW_HIDE, $Vert)
  EndIf
EndFunc

Func Quit()
  Exit
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
c77669,
Что означает Ваш ник?

Ответа не дождался, c77669 - бан за бессмысленный ник.
 
Верх