函数参考


_WinAPI_CreatePen

创建指定样式,宽度和颜色得逻辑笔.

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

参数

$iPenStyle 指定笔的样式.可以是下值之一.
PS_SOLID - 实心纯色.
PS_DASH - 虚线笔.仅当画笔宽度为 1 或设备单位不足时,这种样式有效.
PS_DOT - 点线笔.. 仅当画笔宽度为 1 或设备单位不足时,这种样式有效.
PS_DASHDOT - 虚线与点交替. 仅当画笔宽度为 1 或设备单位不足时,这种样式有效.
PS_DASHDOTDOT - 虚线与双点交替. 仅当画笔宽度为 1 或设备单位不足时,这种样式有效.
PS_NULL - 隐形笔.
PS_INSIDEFRAME - 实心纯色. 当此笔用于 GDI 绘图函数时,可以使用尺寸缩小的笔宽,所以它完全适合于矩形.考虑到笔的宽度,此样式仅适用于几何笔.
$iWidth 指定笔的逻辑单位宽度.
$nColor 指定笔的颜色 (BGR)

返回值

成功: 返回标识逻辑笔的 HPEN 值
失败: 返回 0

注意/说明

 创建的笔可以随后选择到设备环境和用于绘制直线和曲线.
 应用程序创建逻辑笔后,通过调用 SelectObject 函数,可以选中到一个设备环境;以后在设备环境中选中笔,可以用来绘制直线和曲线.
 如果 nWidth 参数指定值为 0,不管当前转型,创建笔绘制一条线始终是一个像素宽.
 如果 nWidth 指定的值大于 1, fnPenStyle 参数必须 PS_NULL, PS_SOLID, 或 PS_INSIDEFRAME.
 当不再需要用笔,调用 DeleteObject 函数删除它.

相关

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

详情参考

在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) ; 全屏场景(桌面)
    $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) ; vertical down
    _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