我正在实现放大和平移画布的功能。我通过有两个画布来做到这一点,一个用于绘图,一个用于显示视口。我无法找到剪辑区域的限制。
无论如何,这一切都有效,我只是在调用放大时将比例设置为高于 1 的值,这具有预期的效果。
我以与设置精灵表动画相同的方式平移画布,视口画布仅充当绘图画布顶部的剪辑区域。
然而,我被困在为边界设置什么数字以阻止画布向右和向下移动太多。
为了清楚起见,我在这里是如何实现平底锅的:
//This only gets called when the canvas is zoomed in.
viewPort.drawImage(canvas,translationX,translationY,viewPort.width,viewPort.height
,0,0,viewPort.width,viewPort.height);
TranslationX 从 0 开始,每次按下右箭头键后,我都会将其增加一个值,我知道这不应该是任意数字,但现在我只是将其设置为 4。
无论如何,这一切都有效,但它超出了画布的边缘,我无法弄清楚停止平移的条件应该是什么,这是我到目前为止所拥有的:
if(canvas.width + translationX <= bCanvas.width)
translationX += 4; //Pan right...
显然这不起作用,它平移了大约 1/5 的视口离开画布边缘。我现在只是在修改它,只是将任意数字放入条件中,所以认为这是寻求一些指导的好时机。
提前致谢
编辑:
好的,所以我制作了一张图片来说明问题,以防我的解释不清楚。
绿色框代表我正在平移的图像,即上述片段中命名的“画布”。
黄色框代表剪辑区域,即上述片段中的“viewPort”。
灰色区域仅代表网页的其余部分。
所以为了澄清,我很困惑在条件中设置什么值来阻止剪辑区域离开画布。
再次感谢