怎样在内存中用256色小图(32X32)做鼠标的光标

symansoft 2000-05-18 09:44:00
请问各位高人:
我在一Form中有10个TImage对象,现欲实现如下功能:
1)用鼠标单击某个TImage时,鼠标的光标立刻由该图象替代,可以在表单上到处移动。
2)鼠标移出该表单时鼠标又变成箭头。


请问我该怎样实现呢?请赐教!


...全文
307 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
symansoft 2000-06-02
  • 打赏
  • 举报
回复

256色自定义光标我已经实现,但有一点不满意,就是自画光标图案(比如一只彩球)四周的背景色是白色,而不是Form的颜色,请问如何解决这个问题呢?谢谢!


symansoft 2000-05-31
  • 打赏
  • 举报
回复

再次感谢Lin的不厌其烦的答复。现在问题的焦点转变为怎样把超级图标软件制作出的256色或真彩色图标的光标资源*.cur编译成*.res文件,看样子本期问题基本上解决了。
Lin 2000-05-29
  • 打赏
  • 举报
回复
1、手工编辑一个RC文件,例如Test.RC,包含以下内容:
...
1000 CURSOR "Test.cur"
...
2、将Test.rc加入到工程;
3、在使用时用LoadImage API,不要用LoadCursor:
Screen.Cursors[1] := LoadImage(hInstance, MakeIntResource(1000), IMAGE_CURSOR, 32, 32, LR_DEFAULTCOLOR);
Button5.Cursor := 1;
4、祝你成功。
symansoft 2000-05-29
  • 打赏
  • 举报
回复

Lin,我今天试用了一下你所建议的超级图标工具,功能确实强大,但有个问题,比如用它制作的光标资源*.Cur在用Borland提供的Brc32编译成*.res时却遇到“Invalid cursor format”的错误(请参看....\examples\game\swat\readme.txt),请问你如何使用的?
Lin 2000-05-28
  • 打赏
  • 举报
回复
symansoft:
自定义光标序号也不一定非要从5开始,如果你看看系统光标的预定义值,它们是从-22到0,所以,自定义光标只要大于0就可以了。
symansoft 2000-05-28
  • 打赏
  • 举报
回复

首先,感谢Lin提供了一个好软件!
关于本期问题的来由,我想做如下详细说明:
我空闲时间想设计一个象棋软件,其中32个棋子用32个TImage对象,每个棋子的Picture属性是32X32的256色BMP文件,同兵种第二个棋子的Picture从第一个中复制(比如第一只车是ChessmanRC1)如:
ChessmanRC2->Picture->Assign(ChessmanRC1->Picture);
奇怪的是,程序运行时,用鼠标拖动ChessmanRC1到ChessmanRC2上时,并不覆盖ChessmanRC2,反而钻到ChessmanRC2下面去了。没办法,只好寄希望于把棋子的Picture取代鼠标的光标,可以拖到任何地方。
我参看了Borland提供的例子游戏Swat,其中自定义光标部分如下:
Screen->Cursors[crMaletUp] = LoadCursor(HInstance, "Malet");
Screen->Cursors[crMaletDown] = LoadCursor(HInstance, "MaletDown");
上面crMaletU为5,crMaletDown为6,我不明白自定义光标序号一定要从5开始,麻烦Lin总结以下好吗?
Lin 2000-05-28
  • 打赏
  • 举报
回复
关于“程序运行时,用鼠标拖动ChessmanRC1到ChessmanRC2上时,并不覆盖ChessmanRC2,反而钻到ChessmanRC2下面去了”,是不是可以这样解决(我没有BCB++,没法子试):ChessmanRC1->BringToFront();
symansoft 2000-05-24
  • 打赏
  • 举报
回复

Lin君回答的非常好,使人茅塞顿开,不过我还得咀嚼一下。如果你提到的那个能取代Borland的ImageEdit的工具不大的话,能否直接寄给我,或告诉我其下载地址?
Lin 2000-05-24
  • 打赏
  • 举报
回复
symansoft:
按照我的理解,Cursor也是一个Icon,所以凡是用到彩色Cursor的地方,都可以用Icon取代,不过,热点位置只能是(0,0),这可能是Icon和Cursor的区别所在。
TIcon允许256色甚至是TrueColor,不过不能使用Borland提供的ImagEdit,得使用其他的工具(如果需要,我可以提供,它还可以编辑ANI文件哦)。在载入的时候,使用LoadImage而不要使用LoadIcon按照我的理解,LoadBitmap、LoadIcon、LoadCursor都将被LoadImage取代。
TIcon应该包含两个TBitmap,一个与,一个或,所以不能将一个TBitmap直接Assign给一个TIcon对象。
symansoft 2000-05-23
  • 打赏
  • 举报
回复
对不起,这几天上网线路不畅,让各位久等了.

我比较同意Lin的看法,我后来查看了帮助文件,发现TImage对象中有TIcon,且TIcon对象也包含TBitmap对象,是否可以用Assign()方法把32X32的位图直接copy到TIcon对象中,不知TIcon是否允许256色,Borland提供的图标制作工具好象只允许16色.请问我的想法是否可行?

Lin 2000-05-19
  • 打赏
  • 举报
回复
你的TImage最好包含是Icon,假设你的表单为TDBGrid DBGrid1:
1、用鼠标单击某个TImage时,鼠标的光标立刻由该图象替代,可以在表单上到处移动。
在Image的OnClick事件中加入:
...
//此处的1为一代表值,只要大于0即可,以免替换掉系统缺省的光标
Screen.Cursors[1] := (Sender as TImage).Picture.Icon.Handle;
DBGrid1.Cursor := 1;
...

2、It's OK,试试看?
kxy 2000-05-19
  • 打赏
  • 举报
回复
把鼠标隐藏,在鼠标的位置画上你的图,然后,鼠标移动到哪里,你就画在哪里:)
1 课程目标 学会使用腾讯提供的云开发功能快速开发后台 数据接口,用于存储小程序中用到的数据 学会使用小程序中常见的一些API,比如:分享小程序,拨打手机电话,地图位置等 掌握快速上架一款小程序需要的步骤 前端相关的css以及html,vue等基础不作为本课程的重点,本课程将提供一个基于图鸟UI修改的企业产品展示前端代码,我们在此基础上使用云开发实现页面数据动态化。由于本人是后端开发,对于前端样式等不擅长,所以基本都是直接复制现成的样式简单的修改,想要学习前端html,css,js,vue等基础知识的小伙伴可以不必考虑本课程,B站以及其他平台有大量的免费课程。 2 课程内容 本课程将实现一个完整功能的企业产品展示小程序,之前有人找我开发一个农用拖拉机企业展示的小程序,说是要用云开发来,正好我之前没用过云开发,都是自己搭建后端API以及管理后台来开发,因此想着一边开发一边录一个云开发的课程,帮助一些同学快速入门云开发,将包括一下内容: 首页 主要产品推荐 顶部铲平轮播图展示 中间产品分类 轮播消息通知 产品价格咨询 用户留下联系方式 全部产品列表展示 产品详细信息展示 用户估价咨询表单,用户向企业出售产品,类似厂家回收 个人中心 注册登录 询价记录 拨打企业电话 查看企业地址 查看企业工作时间 3 使用技术 vue2 uniapp 图鸟UI javascript 腾讯云开发 4 需要的开发工具 图鸟原始模板:https://ext.dcloud.net.cn/plugin?id=14378 hbuilder开发工具: https://www.dcloud.io/hbuilderx.html 微信开发者工具:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧