函数参考


_WinAPI_GradientFill

渐变填充矩形或三角形.

#Include <WinAPIEx.au3>
_WinAPI_GradientFill ($hDC, $aVertex [, $iStart [, $iEnd [, $fRotate]]] )

参数

$hDC 设备环境句柄.
$aVertex 包含多边形的顶点逻辑单位的二维数组: ([x1, y1, $rgb1], [x2, y2, $rgb2], ... [xN, yN, $rgbN]).
 其中包含必要的渐变梯度顶点.数组中的每个顶点包含以下参数:.
 x - X 坐标的逻辑单位.
 y - Y 坐标的逻辑单位
 rgb - X,Y 点的颜色信息.
$iStart [可选参数] 填充开始的数组索引.
$iEnd [可选参数] 填充结束的数组索引.
$fRotate [可选参数] 指定是否从左至右填充矩形(水平渐变梯度).
 此参数仅用于矩形渐变,将忽略三角渐变梯度,有效值为:
1 - 从左至右填充矩形.
0 - 从顶部向底部填充矩形. (默认)

返回值

成功: 返回 1.
失败: 返回 0,并设置@error标志为非 0 值.

注意/说明

如果 $iStart 与 $iEnd 参数定义的顶点数量为 2, 则函数填充矩形;
 如果顶点的数目是 3,则函数填充三角形.
 对于矩形,其顶点必须指定左上角和右下角.
 注意:$aVertex 数组可能包含任意数量的梯度顶点,
 但只有 2 个或 3 个顶点可同时使用,否则,该函数失败.
 函数一次调用只能填充一个矩形或三角形.
 使用多次函数调用,以填补一个复杂的梯度.

相关

详情参考

在MSDN中搜索


示例/演示


#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

Global Const $STM_SETIMAGE = 0x0172
Global Const $STM_GETIMAGE = 0x0173

Global $hForm, $Pic, $hPic, $hObj, $hBitmap, $hDC, $hDestDC, $hDestSv
Global $aVertex[6][3] = [[0, 0, 0xFF0000], [400, 400, 0x00FF00], [  0, 400, 0x0000FF], [0, 0, 0xFF0000], [400,   0, 0xFFFF00], [400, 400, 0x00FF00]]

; 创建 GUI
$hForm = GUICreate('MyGUI', 400, 400)
$Pic = GUICtrlCreatePic('', 0, 0, 400, 400)
$hPic = GUICtrlGetHandle($Pic)

; 创建渐变
$hDC = _WinAPI_GetDC($hPic)
$hDestDC = _WinAPI_CreateCompatibleDC($hDC)
$hBitmap = _WinAPI_CreateCompatibleBitmap($hDC, 400, 400)
$hDestSv = _WinAPI_SelectObject($hDestDC, $hBitmap)
_WinAPI_GradientFill($hDestDC, $aVertex, 0, 2)
_WinAPI_GradientFill($hDestDC, $aVertex, 3, 5)

_WinAPI_ReleaseDC($hPic, $hDC)
_WinAPI_SelectObject($hDestDC, $hDestSv)
_WinAPI_DeleteDC($hDestDC)

; 设置渐变到控件
_SendMessage($hPic, $STM_SETIMAGE, 0, $hBitmap)
$hObj = _SendMessage($hPic, $STM_GETIMAGE)
If $hObj <> $hBitmap Then
    _WinAPI_DeleteObject($hBitmap)
EndIf

GUISetState()

Do
Until GUIGetMsg() = -3