函数参考


GUICtrlSetGraphic

修改一个控件的图形数据.

GUICtrlSetGraphic ( 控件ID, 类型 [, par1 [, ... par6]] )

参数

控件ID 控件标识符(控件ID),可由 GUICtrlCreateGraphic 函数的返回值获得.
类型 可以直接绘图的类型: 点(dot) , 线(line) , 贝赛尔曲线(bezier) , 矩形(rect) , 圆(ellipse) , 饼(pie).
par1...par6 参考 绘图类型列表.

返回值

成功: 返回 1.
失败: 返回 0.
返回-1 (数据无效)

注意/说明

点的坐标 (x,y) 是 GUICtrlCreateGraphic 的相对坐标.它可以超出绘图控件,但是不能超出GUI窗口.

绘图类型列表


类型 参数 结果
$GUI_GR_COLOR 颜色 [,背景色] 定义下次绘图时的颜色. 当背景色等于$GUI_GR_NOCOLOR 时,绘图将会失败.(这是默认值). 默认线的颜色为黑色.
$GUI_GR_MOVE x,y 移动当前坐标,但是不进行绘图.
$GUI_GR_DOT x,y 画一个点(点周围环绕小正方形), 下次绘图时使用上一次的坐标.
$GUI_GR_PIXEL x,y 画一个像素, 下次绘图时使用上一次的坐标.
$GUI_GR_LINE x,y 画一条线.
$GUI_GR_BEZIER x,y,x1,y1,x2,y2 使用两个控制点画一个贝赛尔曲线.
$GUI_GR_RECT x,y,宽,高 画一个矩形. 当 宽=高 ,将画出一个正方形.
$GUI_GR_ELLIPSE x,y,宽,高 画一个椭圆. 当 宽=高 ,将画出一个正圆.
$GUI_GR_PIE x,y,r,sa,wa 画一个饼图 半径=r 出发点=sa 扫描角=wa. Angles are in degrees.
$GUI_GR_CLOSE   关闭当前绘图. 必须附加 $GUI_GR_LINE 或 $GUI_GR_BEZIER . 单独使用将被忽略.
$GUI_GR_REFRESH   在图形动态更新之后强制刷新.
$GUI_GR_HINT   对贝塞尔曲线/线曲线显示控制点与终点.
$GUI_GR_PENSIZE n 为下一幅图画设定画笔大小. 它必须在定义 $GUI_GR_COLOR 之前接受计算.
$GUI_GR_NOBKCOLOR   一个 dummy BkColor 强制关闭图画不填充. 只是在画线时.

适当的设计约束首先画长方形、椭圆和饼图. 例如, 一个矩形总是先画线. 如果图画命令对图形的形状很重要, 那么建议使用多个画图控件而非使用一个控件做所有的图画.

相关

GUICtrlCreateGraphic

示例/演示


#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>

Global $MAXGr = 6, $del, $child
Global $a[$MAXGr + 1] ; 0 and $MAXGr entries not used to allow GUICtrlDelete result

Example()

Func Example()
    Local $msg, $inc, $i, $del1

    GUICreate("My Main", -1, -1, 100, 100)
    $del1 = GUICtrlCreateButton("Delete", 50, 200, 50)
    GUISetState()
    CreateChild()

    $i = 1
    $inc = 1
    ;$i=5   ; uncomment to delete starting from last define Graphic control
    ;$inc=-1

    Do
        $msg = GUIGetMsg()
        If $msg = $del1 Then $i = Del($inc)

        If $msg = $del Then
            GUICtrlDelete($a[$i])
            $i = $i + $inc
            If $i < 0 Or $i > $MAXGr Then Exit
        EndIf
    Until $msg = $GUI_EVENT_CLOSE
EndFunc   ;==>Example

Func Del($iInc)
    GUIDelete($child)
    CreateChild()
    If $iInc = -1 Then Return 5
    Return 1
EndFunc   ;==>Del

Func CreateChild()
    $child = GUICreate("My Draw")
    $del = GUICtrlCreateButton("Delete", 50, 165, 50)

    $a[1] = GUICtrlCreateGraphic(20, 50, 100, 100)
    GUICtrlSetBkColor(-1, 0xffffff)
    GUICtrlSetColor(-1, 0)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff0000, 0xff0000)
    GUICtrlSetGraphic(-1, $GUI_GR_PIE, 50, 50, 40, 30, 270)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00ff00, 0xffffff)
    GUICtrlSetGraphic(-1, $GUI_GR_PIE, 58, 50, 40, -60, 90)

    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 100, 100, 50, 80)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00ff00, 0xc0c0ff)
    GUICtrlSetGraphic(-1, $GUI_GR_RECT, 350, 200, 50, 80)
    GUICtrlCreateLabel("label", 65, 100, 30)
    GUICtrlSetColor(-1, 0xff)

    $a[2] = GUICtrlCreateGraphic(220, 10, 100, 100)

    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0, 0xff)
    GUICtrlSetGraphic(-1, $GUI_GR_PIE, 50, 50, 40, 30, 270)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00ff00, 0xffffff)
    GUICtrlSetGraphic(-1, $GUI_GR_PIE, 58, 50, 40, -60, 90)

    $a[3] = GUICtrlCreateGraphic(220, 110, 100, 100)
    GUICtrlSetBkColor(-1, 0xf08080)
    GUICtrlSetColor(-1, 0xff)
    GUICtrlSetGraphic(-1, $GUI_GR_HINT, 1)

    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff00)
    GUICtrlSetGraphic(-1, $GUI_GR_RECT, 50, 50, 80, 80)

    $a[4] = GUICtrlCreateGraphic(20, 200, 80, 80)
    GUICtrlSetBkColor(-1, 0xffffff)
    GUICtrlSetGraphic(-1, $GUI_GR_HINT, 1)

    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 10, 10)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 30, 40)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff00)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 70, 70)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff0000)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 10, 50)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xffff00)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 10, 10)

    $a[5] = GUICtrlCreateGraphic(150, 10, 50, 50)
    GUICtrlSetBkColor(-1, 0xa0ffa0)
    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 20, 20) ; start point
    ; it is better to draw line and after point
    ; to avoid to switch color at each drawing
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x0000ff)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, 30, 30)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 20, 40)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff0000)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, 25, 25)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 40, 40)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, 30, 40)

    $a[6] = GUICtrlCreateGraphic(110, 260, 230, 130)
    GUICtrlSetColor(-1, 0) ; to display a black border line
    GUICtrlSetBkColor(-1, 0xc0c0ff)
    GUICtrlSetGraphic(-1, $GUI_GR_HINT, 3) ; to display control lines and end points

    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0, 0xff); fill in blue
    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 120, 20) ; start point
    GUICtrlSetGraphic(-1, $GUI_GR_BEZIER, 120, 100, 200, 20, 200, 100)
    GUICtrlSetGraphic(-1, $GUI_GR_BEZIER + $GUI_GR_CLOSE, 100, 40, 40, 100, 40, 20)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 60, 30) ; start point

    GUISetState()
EndFunc   ;==>CreateChild