做的是一个简单的 2D游戏坐标抓取的小工具
我的Form上有个ScrollBox1(用于image太大的时候有滚动条出现可以看到整个地图图片)
ScrollBox1上有个image(用于显示地图图片啦)
image 上面有个PaintBox1,用于画图(比如说画一块矩形来表示这个区域无法行走,再记录下坐标)问题来了,我需要动态创建了一些一些小图片精灵,其实就是把这些小图片摆在地图上,记录下他们的坐标。
   Image[Rec_count]:= Timage.Create(Self);
   Image[Rec_count].Picture.LoadFromFile('.\Sprite\'+Filename+'.bmp');
   Image[Rec_count].Parent:=ScrollBox1;    //这里应该设置成什么 ?
   Image[Rec_count].Left:= Map_X1;
   Image[Rec_count].Top:= Map_Y1;其中 Map_X1 跟 Map_Y1是在PaintBox1 的MouseDown事件里面得到的。
上面的语句,在滚动条没变化的时候是对的。但是当滚动条有动的时候,Image[Rec_count].Left 就忽略了当前滚动条滚了多少,还是把窗口的左上角作为原点。这样图片摆进去的时候就偏到右边了,滚动条滚得越多偏得越多,怎么解决这个问题 ?
我希望我的Image[Rec_count].Left跟Image[Rec_count].Top还是用Map_X1跟Map_Y1来获取,怎么让程序知道我要的原点跟 PaintBox1 的圆点一样?

解决方案 »

  1.   

    顺便问下如何命令  PaintBox1  的横竖滚动条都滚动 100 pixel的距离
      

  2.   

    这就是视点和原点的问题了使用的时候Image[Rec_count].Left/Top增加一个滚动条的偏移量
      

  3.   

    顺便问下如何命令  PaintBox1  的横竖滚动条都滚动 100 pixel的距离
    -----------------
      ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position + 100;
      ScrollBox1.HorzScrollBar.Position := ScrollBox1.HorzScrollBar.Position + 100;
      

  4.   

    记录下偏移量  ScrollBox1.VertScrollBar.Position//垂直
      ScrollBox1.HorzScrollBar.Position//水平