基 础 函 数 参 考


GUICtrlCreatePic

创建图片(Picture)控件.

GUICtrlCreatePic ( 文件名, 左距, 顶距 [, 宽度 [, 高度 [, 样式 [, 扩展样式]]]] )

参 数

文件名 图片文件名称: 支持类型为 BMP, JPG, GIF(非动画效果的).
左距 控件左侧的位置. 若此值为 -1, 则根据 GUICoordMode 的设置计算左侧位置.
顶距 控件上方的位置. 若此值为 -1, 则根据 GUICoordMode 的设置计算顶部位置.
宽度 [可选参数] 控件的宽度(默认使用先前的宽度).
高度 [可选参数] 控件的高度(默认使用先前的高度).
样式 [可选参数] 控件的样式. 查看附录 GUI 控件样式表.

默认样式 (-1) : $SS_NOTIFY
强制样式 : $SS_BITMAP
扩展样式 [可选参数] 控件的扩展样式. 查看附录 扩展样式表.

返 回 值

成功: 返回控件标识符(控件ID).
失败: 返回 0, 不能创建图片.

备 注

设置或者修改控件信息, 参考 GUICtrlUpdate....

更新图片, 请使用 GUICtrlSetImage

要显示目标图片的原始大小, 则设置宽度 = 高度 = 0.

要创建透明图片, 必须创建带有 WS_EX_LAYERED 扩展样式的窗口. 左顶像素将被作为透明色.
如果创建多个图片, 则最后一个图片定义为透明色. 参考例子 2.

要在默认样式上添加新样式, 可使用 BitOr($GUI_SS_DEFAULT_PIC, 新样式,...) 语句.

使用上面列出的值必须将 #include <StaticConstants.au3> 语句写入脚本中.

默认大小为 $GUI_DOCKSIZE.

如果图片设置为背景图片, 并与其它控件交叠时, 需先禁用图片控件: GuiCtrlSetState(-1,$GUI_DISABLE).

扩展样式 $GUI_WS_EX_PARENTDRAG 用于允许拖动没有标题栏的父窗口(父窗没有 $WS_CAPTION 样式).

背景总是被设置为透明. GUICtrlSetBkColor() 对图片控件无效.

PNG 格式图片可以供 GDI+ 使用. 参考例子 3.

相 关 函 数

GUICoordMode (Option), GUICtrlSetImage, GUICtrlUpdate..., GUIGetMsg

函 数 示 例


#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $gui, $guiPos, $pic, $picPos

Example1()
Example2()

;----- 示例 1 ----
Func Example1()
    Local $n, $msg

    GUICreate("我的图像 GUI", 350, 300, -1, -1, $WS_SIZEBOX + $WS_SYSMENU) ; 创建居中显示的 GUI 窗口

    GUISetBkColor(0xE0FFFF)
    $n = GUICtrlCreatePic("..\GUI\mslogo.jpg", 50, 50, 200, 50);译注: Win7 不支持这种路径

    GUISetState()

    ; 运行 GUI, 直到 GUI 被关闭
    While 1
        $msg = GUIGetMsg()

        If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd


    ; 调整控件
    $n = GUICtrlSetPos($n, 50, 50, 200, 100)
    ; 运行 GUI, 直到 GUI 被关闭
    While 1
        $msg = GUIGetMsg()

        If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

    GUIDelete()
EndFunc   ;==>Example1

;----- 示例 2
Func Example2()
    Local $msg

    $gui = GUICreate("测试图像透明", 200, 100)
    $pic = GUICreate("", 68, 71, 10, 20, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $gui)
    GUICtrlCreatePic("..\GUI\merlin.gif", 0, 0, 0, 0);译注: Win7 不支持这种路径

    GUISetState(@SW_SHOW, $pic)
    GUISetState(@SW_SHOW, $gui)

    HotKeySet("{ESC}", "main")
    HotKeySet("{LEFT}", "left")
    HotKeySet("{RIGHT}", "right")
    HotKeySet("{DOWN}", "down")
    HotKeySet("{UP}", "up")
    $picPos = WinGetPos($pic)
    $guiPos = WinGetPos($gui)

    Do
        $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE

    HotKeySet("{ESC}")
    HotKeySet("{LEFT}")
    HotKeySet("{RIGHT}")
    HotKeySet("{DOWN}")
    HotKeySet("{UP}")
EndFunc   ;==>Example2

Func main()
    $guiPos = WinGetPos($gui)
    WinMove($gui, "", $guiPos[0] + 10, $guiPos[1] + 10)
EndFunc   ;==>main

Func left()
    $picPos = WinGetPos($pic)
    WinMove($pic, "", $picPos[0] - 10, $picPos[1])
EndFunc   ;==>left

Func right()
    $picPos = WinGetPos($pic)
    WinMove($pic, "", $picPos[0] + 10, $picPos[1])
EndFunc   ;==>right

Func down()
    $picPos = WinGetPos($pic)
    WinMove($pic, "", $picPos[0], $picPos[1] + 10)
EndFunc   ;==>down

Func up()
    $picPos = WinGetPos($pic)
    WinMove($pic, "", $picPos[0], $picPos[1] - 10)
EndFunc   ;==>up

;----- 示例 3 使用 PNG 图片
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>

Global $hGUI, $hImage, $hGraphic, $hImage1

; 创建 GUI
$hGUI = GUICreate("显示 PNG 图片", 250, 250)

; 加载 PNG 图像
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile("..\GUI\Torus.png");译注: Win7 不支持这种路径
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)

GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
GUISetState()

; 循环到用户退出
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

; 清理资源
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()

; 绘制 PNG 图像
Func MY_WM_PAINT($hWnd, $msg, $wParam, $lParam)
    #forceref $hWnd, $Msg, $wParam, $lParam
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
EndFunc   ;==>MY_WM_PAINT


provider with jb51.net (unicode)