社区
Delphi
帖子详情
怎样在内存中用256色小图(32X32)做鼠标的光标
symansoft
2000-05-18 09:44:00
请问各位高人:
我在一Form中有10个TImage对象,现欲实现如下功能:
1)用鼠标单击某个TImage时,鼠标的光标立刻由该图象替代,可以在表单上到处移动。
2)鼠标移出该表单时鼠标又变成箭头。
请问我该怎样实现呢?请赐教!
...全文
302
12
打赏
收藏
怎样在内存中用256色小图(32X32)做鼠标的光标
请问各位高人: 我在一Form中有10个TImage对象,现欲实现如下功能: 1)用鼠标单击某个TImage时,鼠标的光标立刻由该图象替代,可以在表单上到处移动。 2)鼠标移出该表单时鼠标又变成箭头。 请问我该怎样实现呢?请赐教!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
把鼠标隐藏,在鼠标的位置画上你的图,然后,鼠标移动到哪里,你就画在哪里:)
WINDOWS高级窗口的客户区域拖动技术及其应用
它具有WINDOWS应用程序窗口的所有普通特性:具有标题条、窗口边框、最大化按钮、最小化按钮和系统默认的快捷键及
鼠标
支持功能等,利用
鼠标
左键拖动该种窗口的标题条可以在屏幕上任意移动窗口,当
鼠标
光标
停在窗口...
一些界面设计规范
一个多姿多彩的人机交互界面,少不了精美的
鼠标
光标
、图标以及指示图片、底图等。 1:也需要遵循统一的规则,包括上述颜色表的建立,图标的建立步骤也应该尽可能的形成标准,参考itop的outlookbar图标设计标准 ...
Win32编程API 基础篇 -- 2.一个简单的窗口 根据英文教程翻译
其实这并不难一旦你明白你在
做
什么,但在你得到一个可展示的窗口之前还有一些事情需要我们去
做
,我们只需要简单地聊聊快速
做
下笔记,这个问题就能被很简单的回答。 我很喜欢先动手再学习。。。一下就是一个简单的...
在Debian上用FVWM
做
自己的桌面
用FVWM
做
自己的桌面 Table of Contents 1. 前言 2. 学习步骤 3. 准备 3.1. 软件包 3.2. 字体 3.3. 图片 3.4. 参考资料 4. 环境 5. 布局 6. 配置 6.1. 文件结构 6.2. 环境变量 6.3. 启动...
MiniGUI
目 录MiniGUI 体系结构 概览 引言 POSIX 线程 基于 PThread 的微客户/服务器结构 多线程通讯的关键数据结构——消息队列 面向对象技术在 MiniGUI 中的应用 未来考虑 多窗口管理和控件及控件类 引言 窗口Z序 窗口剪切...
Delphi
5,379
社区成员
262,722
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章