自定义光标
代码
使用图像的方式
你可以使用两个位图(一个用于普通图像,一个用于遮罩图像)来创建图标,并将其手动加载到 Cursors
属性
使用完自定义光标后要调用Windows API函数
DestroyIcon
const
crMyCursor = 5;
procedure TForm1.Button1Click(Sender: TObject);
var
bmpMask : TBitmap;
bmpColor : TBitmap;
iconInfo : TIconInfo;
begin
//加载光标图片
bmpMask := TBitmap.Create;
bmpColor := TBitmap.Create;
bmpMask.LoadFromFile('C:\Users\Administrator\Desktop\1.bmp');
bmpColor.LoadFromFile('C:\Users\Administrator\Desktop\2.bmp');
//Windows API创建光标
with iconInfo do
begin
fIcon := false;
xHotspot := 15;
yHotspot := 15;
hbmMask := bmpMask.Handle;
hbmColor := bmpColor.Handle;
end;
//添加到Screen中
Screen.Cursors[crMyCursor] := CreateIconIndirect(iconInfo);
//设置光标
Screen.Cursor := crMyCursor;
bmpMask.Free;
bmpColor.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//设置为默认
Screen.Cursor := crDefault;
//释放光标
DestroyIcon(Screen.Cursors[crMyCursor]);
end;
使用光标资源的方式
- 使用资源编辑器创建光标资源。
- 声明一个光标常量,其值不能与现有光标常量冲突。
- 使用Windows API 函数
LoadCursor
或LoadImage
获取新光标的句柄。 - 将由新声明的光标常量索引的
Cursors
属性设置为从LoadCursor
获取的句柄。
使用完自定义光标后不要调用Windows API函数
DestroyCursor
,它是自动处理的。
const
crMyCursor = 5;
procedure TForm1.Button3Click(Sender: TObject);
var
icon: HICON;
begin
//从文件中加载
icon := LoadCursorFromFile('C:\Windows\Cursors\aero_pin.cur');
//添加到Screen中
Screen.Cursors[crMyCursor] := icon;
//设置光标
Screen.Cursor := crMyCursor;
end;
Vcl.Forms.TScreen.Cursors
property Cursors[Index: Integer]: HCURSOR read GetCursors write SetCursors;
列出应用程序可用的光标。
使用 Cursor
访问特定的光标,供应用程序或应用程序中的控件使用。 TScreen
包括几个内置光标,它们由符号光标常量(例如 crDefault
)索引。与内置光标常量关联的图像可以通过设置 Cursors
属性来更改。
CreateIconIndirect
function CreateIconIndirect;
unit
从 ICONINFO
结构创建图标或光标。
DestroyIcon
function DestroyIcon;
unit
销毁图标并释放图标占用的任何内存。
LoadCursorFromFile
function LoadCursorFromFile: HCURSOR;
unit
基于文件中包含的数据创建游标。