Windows Phone 7 + 画布 + 手势 + OnDrag 事件 + 限制平移/拖动

3

我有一个容器画布,里面加载了一个大尺寸画布。我使用手势监听方法,其中包括OnDragStarted、OnDragDelta和OnDragCompleted等方法,用于平移内部(较大尺寸)画布。

问题是我无法限制内部画布的平移范围,也就是说,我应该能够在外部画布的边界内平移内部画布。

如何实现这个功能?


我不太理解这个问题。你基本上有一个窗口,外层画布,看着一个更大的画布?如果你知道两个画布的尺寸,你可以计算内部画布的移动范围,并在监听方法中防止超出限制的移动。如果你贴上相关代码片段,我可以修改它们以实现这种行为。 - expelledboy
Windows Phone 7 IE9不支持拖动事件...您将需要使用本机的Silverlight/XNA/C#事件。 - Barrie Reader
2个回答

0

我的理解是您想在外部画布内移动内部画布,并限制内部画布的移动范围。

这个功能听起来非常类似于可拖动地图效果。如果是这样,您能否使用自定义图像来适应地图控件进行平移/缩放?

根据我理解回答您的具体问题,您需要在处理GestureListenerGestureReceiver事件时检测内部画布的当前位置。

然后,当到达您的x、y点时要么停止移动,要么防止执行事件,如果它已经在那个位置。


0

我认为你缺少的是定义外部画布的剪辑。你需要这样做的原因是默认情况下,画布没有overflow:hidden属性。任何实际上比它更大的子元素都会显示在其边界之外。

你需要像这样设置外部画布的剪辑:

<Canvas Width="200" Height="100">       
    <Canvas.Clip>
        <RectangleGeometry Rect="0, 0, 200, 100"/>
    </Canvas.Clip>
</Canvas>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接