现有一张游戏地图 地图大小 128*128 的bmp图片已知游戏实际地图的对角坐标
左下角坐标-1280,-1280右上角坐标1280,1280并且已经知道游戏人物自身坐标 -100,120现在我想在那个128*128的缩略地图中画出我自己的位置,请高手帮忙看看如何实现。

解决方案 »

  1.   

    顺便说一下 游戏试2D的 只有x和y
      

  2.   

    var
      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);
      

  3.   

    感谢仁兄的恢复 ,如果我要实现令一个功能鼠标在BMP图片中移动,可否换算出游戏中的实际坐标呢?是不是比这个难度要大很多?
      

  4.   

    就是已知bmp中鼠标点击的坐标,换算出真实的游戏坐标
      

  5.   

    一样的,也可以.思路就是:按照X方向的来说,鼠标的X位置 - bmp最左边的X的位置 就等于:鼠标离bmp最左边的距离.
    然后用这个距离 除以bmp的宽度,就等于: 鼠标是在X方向上,大概百分之多少的地方.再用这个百分比,去乘以地图的宽度,就得出:人物离地图最左边的距离,最后用这个距离 + 地图最左边的X坐标,就得到了人物在地图上的X方向的坐标.
      

  6.   

    比如鼠标现在位置x=78
    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  不对?? 有些晕了。
      

  7.   

    var 
      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);