我有一个容器画布,里面加载了一个大尺寸画布。我使用手势监听方法,其中包括OnDragStarted、OnDragDelta和OnDragCompleted等方法,用于平移内部(较大尺寸)画布。
问题是我无法限制内部画布的平移范围,也就是说,我应该能够在外部画布的边界内平移内部画布。
如何实现这个功能?
我有一个容器画布,里面加载了一个大尺寸画布。我使用手势监听方法,其中包括OnDragStarted、OnDragDelta和OnDragCompleted等方法,用于平移内部(较大尺寸)画布。
问题是我无法限制内部画布的平移范围,也就是说,我应该能够在外部画布的边界内平移内部画布。
如何实现这个功能?
我的理解是您想在外部画布内移动内部画布,并限制内部画布的移动范围。
这个功能听起来非常类似于可拖动地图效果。如果是这样,您能否使用自定义图像来适应地图控件进行平移/缩放?
根据我理解回答您的具体问题,您需要在处理GestureListener
或GestureReceiver
事件时检测内部画布的当前位置。
然后,当到达您的x、y点时要么停止移动,要么防止执行事件,如果它已经在那个位置。
我认为你缺少的是定义外部画布的剪辑。你需要这样做的原因是默认情况下,画布没有overflow:hidden属性。任何实际上比它更大的子元素都会显示在其边界之外。
你需要像这样设置外部画布的剪辑:
<Canvas Width="200" Height="100">
<Canvas.Clip>
<RectangleGeometry Rect="0, 0, 200, 100"/>
</Canvas.Clip>
</Canvas>