1

我正在尝试基于 Delphi 中的画布制作一个小游戏。基本上,我想制作一个相当大的位图(例如 3000x3000),然后将其加载到画布中,并且能够像普通图像查看器一样向右/向左/向上/向下滚动,但是我不能似乎找到了我正在寻找的东西。有任何想法吗?

4

1 回答 1

4

将图像加载到屏幕外TBitmap对象。然后,OnPaint,或在适合您的特定应用程序的任何时候,使用BitBltCanvas.Draw将矩形子图像绘制TBitmap到画布上。子部分应从 开始,(X, Y)宽度TBitmap和高度分别等于ClientWidthClientHeight

现在,响应键盘事件。编写一个FormKeyDown事件处理程序,并监听Key = VK_LEFTKey = VK_RIGHTKey = VK_UPKey = VK_DOWN(使用case语句)。当您检测到这样的键被按下时,酌情增加/减少XY,然后使用此起点再次绘制场景。

您还可以响应MouseDownMouseMoveMouseUp事件以使用鼠标滚动。您可以只使用中间的 ( MouseMove):您可以检查光标是否靠近表单的边缘,如果是,则沿此方向平滑滚动(TTimer例如,使用 a )。或者,您可以将FMouseDown标志设置为truein MouseDown,然后将其重置为falsein MouseUp。然后,在 中,如果是,则在 x 方向上MouseMove滚动位图,并在 y 方向上滚动位图。(这里,和是事件处理程序的参数;是光标的当前位置。)过程应该以X-XOldFMouseDowntrueY-YOldXYMouseMove(X, Y)MouseMove

XOld := X;
YOld := Y;

不管FMouseDown是开还是关。

于 2010-09-14T19:27:51.940 回答