| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4229 人关注过本帖, 2 人收藏
标题:求助!!!
取消只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏(2)
已结贴  问题点数:100 回复次数:64 
求助!!!
下面是我写的一个象棋的界面
图片附件: 游客没有浏览图片的权限,请 登录注册


棋盘是在程序里画的 棋子是PS搞的 然后在主窗口裁剪了一个圆形区域 用BitBlt把棋子传输到这个区域中
右边的按钮 的功能先不搞 现在我的主要问题是怎么实现棋子的移动。
大致有这么个流程:
1. 在棋子上点击鼠标 产生一个鼠标点击事件 系统怎么相应这个事件 让这个棋子位图被锁定 并在其周围
显现出 一个断裂的方框 (表示此棋子被选中)?
2.移动鼠标到下一个位置(适当的位置) 点击鼠标(鼠标的坐标不一定在十字交叉的地方 而是在一个有效范
围内就相应, 不在有效范围内就不相应) 系统怎么相应这个事件 产生一个棋子位图重新放置的裁剪区域?
3.系统相应第2步后 棋子移动 怎么在同时让原位置被棋盘的相应部分覆盖,并不出现闪烁?
4.红 黑 方 吃子如何实现?
搜索更多相关主题的帖子: 象棋 鼠标 
2012-05-14 14:08
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 3楼 TonyDeng
老大 棋盘是自己在主窗口上画的 棋子是BMP图片 60 * 60 大小的正方形 我是在棋盘(主窗口上)创建一个圆形裁剪区域然后把棋子图片BitBlt上去的 截图也是我这样的吗?还不很清楚这些方式啊

o 在说下 我贴的这个图是我做完一个棋子后写的程序 因为我还不会移动棋子 网上看了N多网页没找到相关的介绍 所以就发帖来求助 如果PS完所有的棋子我就能都把他们贴到想要的位置上 我现在的问题是 怎么让棋子BMP图片相应鼠标的点击 然后移动  也就是当我点击一下鼠标时 系统怎么知道我点击的这个地方贴了个位图 如果根据WM_LBUTTONDOWN 怎么获取这个位图的句柄? 说的更细点就是 比如我上面那个图 当我点击 ‘帅’上面 立刻出现一个MessageBox(…“你点击的是帅”…) 如果点击其他地方就提示 MessageBox(…“你点击的地方没有棋子”…) 要实现这个效果 怎么和HBITMAP (棋子句柄)发生联系?

[ 本帖最后由 有容就大 于 2012-5-14 18:34 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-05-14 18:06
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 4楼 TonyDeng
…… GIF动画怎么搞啊 要说在窗口上画图我还能理解点

梅尚程荀
马谭杨奚







                                                       
2012-05-14 18:07
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 5楼 TonyDeng
程序代码:
难道你要根据鼠标的绝对坐标来确定处理对象?

棋谱上当前是什么棋子,就从外部图片数据库中取出对应棋子图像填到需要的区域,哪有人截图搬运的。


我现在的想法是这样的
先划出90个圆形区域(半径可以比30小一点) 对应棋盘每个交叉点 然后根据鼠标的当前坐标 判断是否落在90个有效区域内 再判断落在那个有效区域内 然后根据这个确定是那个交叉点 然后再实施相关操作 这样想有问题吗?

[ 本帖最后由 有容就大 于 2012-5-14 18:24 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-05-14 18:21
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 6楼 smallmoon521
解释下吧 我一脑壳浆糊现在

梅尚程荀
马谭杨奚







                                                       
2012-05-14 18:22
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 11楼 ppfly
大侠 我现在已经做好了一个 间断框
图片附件: 游客没有浏览图片的权限,请 登录注册

我就是不知道当我点击棋子位图时 怎么和这个位图发生联系 然后把这个框加到他上面 如果鼠标点击的地方没有棋子就不做加 而是移动(当然是复活规则的移动)。

是不是要记录每个棋子位图的原始区域(裁剪区域)然后和鼠标点击的坐标做比较?想了半天搞不通啊

梅尚程荀
马谭杨奚







                                                       
2012-05-14 18:58
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 14楼 beyondyf
杨大哥好啊
很想呢 如果能看懂C#实例的大概流程 就可以借鉴吧
能给个吗

梅尚程荀
马谭杨奚







                                                       
2012-05-14 21:02
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 17楼 beyondyf
嗯 如果有更好 哈哈

梅尚程荀
马谭杨奚







                                                       
2012-05-14 21:18
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 16楼 TonyDeng
看完这么多讲解 很受启发 也就是说我在主窗口创建裁剪区域来传输位图有很大的缺陷哦
按你说的要创建一个个60 * 60 像素的子窗口控件来实现 是不是?

梅尚程荀
马谭杨奚







                                                       
2012-05-14 21:24
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 20楼 beyondyf
哈哈 如果这样TONY老大以后不知道会不会在理睬我啊 他很热心的对我讲解呢 谢谢先。

不过如果真能通过你给的C#的实例完成我这个WIN32的实例我相信各位热心的坛友会谅解我答应你的条件的

问题来了 我C#没什么基础 & C#封装的厉害 不知能否理解透彻 能否提供跟踪解说

以上纯属猜测 各位不要介意啊

梅尚程荀
马谭杨奚







                                                       
2012-05-14 21:41
快速回复:求助!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018939 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved