现有一张游戏地图 地图大小 128*128 的bmp图片已知游戏实际地图的对角坐标
左下角坐标-1280,-1280右上角坐标1280,1280并且已经知道游戏人物自身坐标 -100,120现在我想在那个128*128的缩略地图中画出我自己的位置,请高手帮忙看看如何实现。
左下角坐标-1280,-1280右上角坐标1280,1280并且已经知道游戏人物自身坐标 -100,120现在我想在那个128*128的缩略地图中画出我自己的位置,请高手帮忙看看如何实现。
解决方案 »
- delphi2005那些ADO空间都跑哪儿去了?
- 谢谢大家。简单问题??
- 请教:如何用FastReport实现自定义纸张报表打印?如果能让本人掌握其中技术,感激不尽。
- AnsiString?PChar?赋值?转换?(请aiirii(ari)来看一下)
- 这个update语句在SQL里面可以使用,为什么在Access里面不行呢?
- //非常奇特的系统启动现象,进来看看//
- 关于三层的应用服务器的规划问题(讨论者都有分)
- 求高手帮忙,delphi运行SetEntriesInAcl函数出错问题
- 有那位高手知道,立体效果(比如渐变色)的算法吗?分一定往上加!
- 如何修改网卡的IP地址?
- 两个整型想减的问题
- 动态建立的PANEL的删除....
GameLeftTopPoint, GameRightBottomPoint,
BmpLeftTopPoint, BmpRightBottomPoint,
GamePlayerPoint, BmpPlayerPoint: TPoint;
...... GameLeftTopPoint.X := -1280;
GameLeftTopPoint.Y := -1280; GameRightBottomPoint.X := 1280;
GameRightBottomPoint.Y := 1280; BmpLeftTopPoint.X := 0
BmpLeftTopPoint.Y := 0;
BmpRightBottomPoint.X := 128;
BmpRightBottomPoint.Y := 128; GamePlayerPoint.X := -100;
GamePlayerPoint.Y := 120; BmpPlayerPoint.X := (GamePlayerPoint.X - GameLeftTopPoint.X) * (BmpRightBottomPoint.X - BmpLeftTopPoint.X) div (GameRightBottomPoint.X - GameLeftTopPoint.X);
BmpPlayerPoint.Y := (GamePlayerPoint.Y - GameLeftTopPoint.Y) * (BmpRightBottomPoint.Y - BmpLeftTopPoint.Y) div (GameRightBottomPoint.Y - GameLeftTopPoint.Y);
然后用这个距离 除以bmp的宽度,就等于: 鼠标是在X方向上,大概百分之多少的地方.再用这个百分比,去乘以地图的宽度,就得出:人物离地图最左边的距离,最后用这个距离 + 地图最左边的X坐标,就得到了人物在地图上的X方向的坐标.
y=15鼠标的X位置 - bmp最左边的X的位置 就等于:鼠标离bmp最左边的距离.
x-0=78;
然后用这个距离 除以bmp的宽度,就等于: 鼠标是在X方向上,大概百分之多少的地方.
78 div 128 =0.6游戏地图宽度
GameLeftTopPoint.X := -1280;
GameLeftTopPoint.Y := -1280; GameRightBottomPoint.X := 1280;
GameRightBottomPoint.Y := 1280;
-1280 到 1280 的宽度是 2560 ,这个是不是应该这样算abs(l.x)+abs(r.x)??0.6*2560=15361536+-1280=256 不对?? 有些晕了。
GameLeftTopPoint, GameRightBottomPoint,
BmpLeftTopPoint, BmpRightBottomPoint,
GamePlayerPoint, BmpPlayerPoint: TPoint;
...... GameLeftTopPoint.X := -1280;
GameLeftTopPoint.Y := -1280; GameRightBottomPoint.X := 1280;
GameRightBottomPoint.Y := 1280; BmpLeftTopPoint.X := 0
BmpLeftTopPoint.Y := 0;
BmpRightBottomPoint.X := 128;
BmpRightBottomPoint.Y := 128; BmpPlayerPoint.X := 78;
BmpPlayerPoint.Y := 15; GamePlayerPoint.X := (BmpPlayerPoint.X - BmpLeftTopPoint.X) * (GameRightBottomPoint.X - GameLeftTopPoint.X) div (BmpRightBottomPoint.X - BmpLeftTopPoint.X); GamePlayerPoint.Y := (BmpPlayerPoint.Y - BmpLeftTopPoint.Y) * (GameRightBottomPoint.Y - GameLeftTopPoint.Y) div (BmpRightBottomPoint.Y - BmpLeftTopPoint.Y);