LoadPicture

AutoHotKey

LoadPicture [v1.1.23+]

载入一个图像文件并返回一个位图或图标句柄.

Handle := LoadPicture(Filename [, Options, ByRef ImageType])

参数

Filename

图片的文件名, 如果未设置为绝对路径则通常假定为 A_WorkingDir 目录中. 对于 DLL 或 EXE 文件, 如果仅仅指定了文件名 (而不是完整路径), 那么可能会从当前执行程序 (AutoHotkey.exe 或是已编译的程序) 目录, 或系统路径 (加入到PATH中的那些路径) 中查找它.

Options

一个包含零个或多个下列选项的字串, 每个选项之间以空格或制表符间隔:

Wn and Hn: 待载入图像的宽度和高度, n 为整数. 如果省略某个尺寸或指定为 -1 , 该尺寸将在保持宽高比的情况下根据另一个尺寸进行计算. 如果两个尺寸都被省略将使用图像的原始尺寸. 如果任一尺寸被指定为0则该尺寸仍会使用原始尺寸. 例如: "w80 h50", "w48 h-1" or "w48" (保持宽高比), "h0 w100" (使用原始高度但宽度不变).

Iconn: 指代多图标文件(一般是EXE或DLL文件)中待载入图标的序号, 若 n 非零,文件中必须包含一个图标. 例如, "Icon2" 会载入文件中的第二个图标.

GDI+: 尝试使用 GDI+ 的方式载入图像. 例如: "GDI+ w100".

ImageType

不加引号的变量名,该变量会储存一个表示返回的句柄类型的整数: 0 (IMAGE_BITMAP), 1 (IMAGE_ICON) 或 2 (IMAGE_CURSOR). 如果忽略该变量名或不是一个正确的变量名,则返回值总是位图句柄 (图标/光标类型会按需转换).

备注

LoadPicture 也支持 句柄表示法, 从一个已载入到内存中的图标或位图创建一个重调大小的图像, 或将一个图标通过忽略 ImageType 的方式转换成位图.

如果图像需要从内存中释放,请调用任何适合于句柄类型的函数.

if (not ImageType)  ; IMAGE_BITMAP (0) or the ImageType parameter was omitted.
    DllCall("DeleteObject", "ptr", Handle)
else if (ImageType = 1)  ; IMAGE_ICON
    DllCall("DestroyIcon", "ptr", Handle)
else if (ImageType = 2)  ; IMAGE_CURSOR
    DllCall("DestroyCursor", "ptr", Handle)

相关

Image 句柄

示例

; 预加载并复用一些图像

Pics := []
; 寻找几张图像用来展示
Loop, Files, %A_WinDir%\Web\Wallpaper\*.jpg, R
{
    ; 载入找到的图像并添加到数组中
    Pics.Push(LoadPicture(A_LoopFileFullPath))
}
if !Pics.Length()
{
    ; 如果发生找不到文件的情形,将正确的路径手动添加到上述的loop循环中
    MsgBox, No pictures found!  Try a different directory.
    ExitApp
}
; 创建图标控件,保持第一张图的宽高比
Gui, Add, Pic, w600 h-1 vPic +Border, % "HBITMAP:*" Pics.1
Gui, Show
Loop 
{
    ; 切换图片!
    GuiControl, , Pic, % "HBITMAP:*" Pics[Mod(A_Index, Pics.Length())+1]
    Sleep 3000
}
return
GuiClose:
GuiEscape:
ExitApp