首页 > 其他分享 >delphi 自定义光标

delphi 自定义光标

时间:2023-10-10 19:12:25浏览次数:41  
标签:自定义 Windows delphi crMyCursor Cursors Screen 光标

自定义光标

代码

使用图像的方式

你可以使用两个位图(一个用于普通图像,一个用于遮罩图像)来创建图标,并将其手动加载到 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;

使用光标资源的方式

  1. 使用资源编辑器创建光标资源。
  2. 声明一个光标常量,其值不能与现有光标常量冲突。
  3. 使用Windows API 函数LoadCursorLoadImage 获取新光标的句柄。
  4. 将由新声明的光标常量索引的 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

Winapi.Windows

ICONINFO 结构创建图标或光标。

DestroyIcon

function DestroyIcon;

unit

Winapi.Windows

销毁图标并释放图标占用的任何内存。

LoadCursorFromFile

function LoadCursorFromFile: HCURSOR;

unit

Winapi.Windows

基于文件中包含的数据创建游标。

参考

CreateIconIndirect 函数

DestroyIcon 函数

LoadCursorFromFileW 函数

标签:自定义,Windows,delphi,crMyCursor,Cursors,Screen,光标
From: https://www.cnblogs.com/txgh/p/17755487.html

相关文章

  • abp 框架使用自定义appsetings.json
    定义一个自定义的配置文件在调试配置中设置启动环境这里的值填入刚刚设置的配置文件appsetings.{配置文件名字}.json的配置文件名字启动即可系统启动时,首先会检查{配置文件名字}是否存在,存在的话使用appsettings.{配置文件名字}.json,不存在则使用appsettings.json(默认配......
  • autohotkey 设置快捷键 设置光标位置 (ctrl + alt + Numpad0)
    autohotkey设置快捷键设置光标位置(ctrl+alt+Numpad0)原因3个屏幕,所以鼠标设置的灵敏度非常高,经常就找不到鼠标在哪了。设置个快捷键,让鼠标每次都初始化一个位置,这就好找了代码;设置光标到指定位置,3个屏幕光标有时候不好找;^ctrl!alt+代表Shift;^!+Numpad0::;sh......
  • 一种自定义圆角按钮
    效果图: 代码:///<summary>///头像按钮///</summary>publicclassAvaButton:ButtonBase{publicstaticreadonlyDependencyPropertyCornerRadiusProperty=DependencyProperty.Register("CornerRadius",typeof(CornerRadius),t......
  • 深入理解模型视图、自定义模型
    一、深入理解模型model提供一种标准接口,供视图和委托访问数据。在Qt中,这个接口由QAbstractItemModel类进行定义。不管底层数据是如何存储的,只要是QAbstractItemModel的子类,都提供一种表格形式的层次结构。视图利用统一的转换来访问模型中的数据。但是,需要提供的是,尽管模型内部是......
  • 注解(Annotation)简介,内置注解,元注解,自定义注解
    注解:不是程序本身,可以对程序做出解释(这一点和注释没什么区别)可以被其他程序(比如编译器)读取@Functional(这是L)(这是I)Interface  函数式接口 内置注解:java本来就有的注解@Override  重写@Deprecated 已废弃,不推荐使用的意思@SuppressWarnings 镇压警告 ......
  • 造轮子之自定义授权策略
    前面我们已经弄好了用户角色这块内容,接下来就是我们的授权策略。在asp.netcore中提供了自定义的授权策略方案,我们可以按照需求自定义我们的权限过滤。这里我的想法是,不需要在每个Controller或者Action打上AuthorizeAttribute,自动根据ControllerName和ActionName匹配授权。只需要......
  • 自定义滚动条 css
    /*自定义滚动条css*/.customScrollbar::-webkit-scrollbar{width:10px;height:10px;}.customScrollbar::-webkit-scrollbar-thumb{border-radius:8px;background-color:#47515b;}.customScrollbar::-webkit-scrollbar-thumb:hover{background-color:#5D626C;}.customScr......
  • css自定义滚动条
    .container{width:200px;height:150px;overflow:auto;/*自动显示滚动条/-ms-overflow-style:scrollbar;/在IE上显示自定义滚动条*/}/*自定义滚动条的样式*/.container::-webkit-scrollbar{width:10px;height:10px;}.container::-webkit-scrollbar-trac......
  • 【webapp】在 JSP 页面中引入标签库和使用自定义标签
    自定义标签的基本步骤:创建自定义标签库文件:首先,您需要创建一个包含自定义标签定义的标签库文件(通常以 .tld 扩展名结尾)。该文件描述了标签的名称、属性和处理逻辑。引入标签库:在JSP页面中,通过使用 <%@taglib%> 指令来引入自定义标签库。该指令告诉JSP引擎在页面中......
  • TinyMCE——自定义工具栏按钮(基础按钮、下拉框按钮、弹框按钮等)
    详细配置查看官方文档:https://www.tiny.cloud/docs/tinymce/6/custom-toolbarbuttons/  配置方式:tinymce.init({selector:'#editor',toolbar:'myCustomToolbarButton',setup:(editor)=>{editor.ui.registry.addButton('myCustomToolb......