Функция _WinAPI_CreatePen

 ↑  ←  Описание функции


_WinAPI_CreatePen

Создает логическое перо, с указанным стилем, шириной и цветом.

#include <WinAPI.au3>
_WinAPI_CreatePen($iPenStyle, $iWidth, $nColor)

Параметры

$iPenStyle Стиль пера. Это может быть одним из следующих значений:
    $PS_SOLID - Сплошной.
    $PS_DASH - Пунктирный. Этот стиль действует только тогда, когда толщина пера является один или менее единицы измерения.
    $PS_DOT - Из точек. Этот стиль действует только тогда, когда толщина пера является один или менее единицы измерения.
    $PS_DASHDOT - Чередуется тире и точка. Этот стиль действует только тогда, когда толщина пера является один или менее единицы измерения.
    $PS_DASHDOTDOT - Чередуется тире и две точки. Этот стиль действует только тогда, когда толщина пера является один или менее единицы измерения.
    $PS_NULL - Невидимый.
    $PS_INSIDEFRAME - Сплошной, внутри. Когда перо используется в любой GDI-функции в виде прямоугольника, его размер уменьшается так, что умещается в прямоугольнике вместе с шириной пера. Это применяется только для геометрического пера.
$iWidth Ширина пера в логических единицах.
$nColor Цвет пера (BGR)

Возвращаемое значение

Успех:Возвращает HPEN определяющее логическое перо
Ошибка:Возвращает 0

Примечания

В дальнейшем перо может быть выбрано в контекст устройстве и использоваться для рисования прямых и кривых линий.
После создания логического пера, оно может быть выбрано в контекст устройстве с помощью функции _WinAPI_SelectObject(). После выбора пера в контекст устройстве, его можно использовать для рисования прямых и кривых линий.
Если ширина пера задана равной 0, то линия созданная пером всегда будет шириной в 1 пиксель, независимо от текущих преобразований.
Если ширина пера задана более чем 1, то стиль $iPenStyle должен быть PS_NULL, PS_SOLID, or PS_INSIDEFRAME.
Когда перо больше не нужно, вызовите _WinAPI_DeleteObject(), чтобы удалить его.

См. также

_WinAPI_MoveTo, _WinAPI_LineTo, _WinAPI_SelectObject, _WinAPI_DeleteObject, _WinAPI_DrawLine, _WinAPI_GetBkMode, _WinAPI_SetBkMode

См. также

Искать CreatePen в библиотеке MSDN

Пример

#include <WindowsConstants.au3>
#include <WinAPI.au3>

ShowCross(@DesktopWidth / 2, @DesktopHeight / 2, 20, 2, 0xFF, 3000)

Func ShowCross($start_x, $start_y, $length, $width, $color, $time)
    Local $hDC, $hPen, $obj_orig

    $hDC = _WinAPI_GetWindowDC(0) ; DC всего экрана (рабочего стола)
    $hPen = _WinAPI_CreatePen($PS_SOLID, $width, $color)
    $obj_orig = _WinAPI_SelectObject($hDC, $hPen)

    _WinAPI_DrawLine($hDC, $start_x - $length, $start_y, $start_x - 5, $start_y) ; горизонтальная слева
    _WinAPI_DrawLine($hDC, $start_x + $length, $start_y, $start_x + 5, $start_y) ; горизонтальная справа
    _WinAPI_DrawLine($hDC, $start_x, $start_y - $length, $start_x, $start_y - 5) ; Вертикальная сверху
    ;   _WinAPI_DrawLine($hDC, $start_x, $start_y + $length, $start_x, $start_y + 5) ; Вертикальная снизу
    _WinAPI_MoveTo($hDC, $start_x, $start_y + $length)
    _WinAPI_LineTo($hDC, $start_x, $start_y + 5)

    Sleep($time) ; Показать крестообразный прицел поверх экрана за счёт указанной задержки времени

    ; Обновить рабочий стол (очистить / удалить крестообразный прицел)
    _WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN)

    ; Очистить ресурсы
    _WinAPI_SelectObject($hDC, $obj_orig)
    _WinAPI_DeleteObject($hPen)
    _WinAPI_ReleaseDC(0, $hDC)
EndFunc   ;==>ShowCross