我正在尝试基于 Delphi 中的画布制作一个小游戏。基本上,我想制作一个相当大的位图(例如 3000x3000),然后将其加载到画布中,并且能够像普通图像查看器一样向右/向左/向上/向下滚动,但是我不能似乎找到了我正在寻找的东西。有任何想法吗?
1 回答
将图像加载到屏幕外TBitmap对象。然后,OnPaint,或在适合您的特定应用程序的任何时候,使用BitBlt或Canvas.Draw将矩形子图像绘制TBitmap到画布上。子部分应从 开始,(X, Y)宽度TBitmap和高度分别等于ClientWidth和ClientHeight。
现在,响应键盘事件。编写一个FormKeyDown事件处理程序,并监听Key = VK_LEFT、Key = VK_RIGHT、Key = VK_UP和Key = VK_DOWN(使用case语句)。当您检测到这样的键被按下时,酌情增加/减少X或Y,然后使用此起点再次绘制场景。
您还可以响应MouseDown、MouseMove和MouseUp事件以使用鼠标滚动。您可以只使用中间的 ( MouseMove):您可以检查光标是否靠近表单的边缘,如果是,则沿此方向平滑滚动(TTimer例如,使用 a )。或者,您可以将FMouseDown标志设置为truein MouseDown,然后将其重置为falsein MouseUp。然后,在 中,如果是,则在 x 方向上MouseMove滚动位图,并在 y 方向上滚动位图。(这里,和是事件处理程序的参数;是光标的当前位置。)过程应该以X-XOldFMouseDowntrueY-YOldXYMouseMove(X, Y)MouseMove
XOld := X;
YOld := Y;
不管FMouseDown是开还是关。