windows phone 7 + canvas + gesture + OnDrag事件+限制平移/拖动

时间:2011-06-09 11:45:25

标签: windows-phone-7

我有一个容器画布,我正在装载一个大尺寸画布。我正在使用手势监听器方法。 OnDragStarted,OnDragDelta和OnDragCompleted等方法很少,我使用这些方法来平移内部(更大尺寸)画布。

问题是我无法限制内部画布的平移,这意味着我应该能够在外部画布的边界内平移内部画布。

怎么能这样做?

2 个答案:

答案 0 :(得分:0)

我的理解是,您希望能够在外部画布中移动内部画布,并限制内部画布可以移动多少。

此功能听起来与可拖动的地图效果非常相似。如果是这样,您是否可以使用自定义图像调整地图控件以进行平移/缩放?

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

然后当你到达你的x,y点时停止运动,或者如果事件已经在那个位置则阻止执行。

答案 1 :(得分:0)

我认为您缺少的是定义外部画布的剪辑。您需要这样做的原因是默认情况下Canvas没有overflow:hidden。其中任何实际上更大的孩子都会在它的边界之外显示出来。

您需要为外部Canvas设置剪辑,如下所示:

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