Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ViewportControl和图像-如何避免无休止的滚动_C#_Xaml_Windows Phone 8 - Fatal编程技术网

C# ViewportControl和图像-如何避免无休止的滚动

C# ViewportControl和图像-如何避免无休止的滚动,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,我正在编写一种地图(用于一个非常简单的游戏),它(目前)是一幅图像。 我希望用户能够滚动图像周围和调整大小。 我做了很多尝试,目前我正在使用ViewportControl,XAML看起来大致如下(见下文)。 我按照它所需要的方式工作-但是图像本身可以在ViewPortControl中滚动,没有任何边界。因此,图像会滚动消失 问题:是否有任何方法可以防止Viewportcontroll将图像滚动出指定区域 <ViewportControl x:Name="viewport" Height="

我正在编写一种地图(用于一个非常简单的游戏),它(目前)是一幅图像。 我希望用户能够滚动图像周围和调整大小。 我做了很多尝试,目前我正在使用ViewportControl,XAML看起来大致如下(见下文)。 我按照它所需要的方式工作-但是图像本身可以在ViewPortControl中滚动,没有任何边界。因此,图像会滚动消失

问题:是否有任何方法可以防止Viewportcontroll将图像滚动出指定区域

<ViewportControl x:Name="viewport" Height="600" Width="440">
            <Canvas x:Name="ParentCanvas" Background="Red" MaxHeight="600" MaxWidth="440">
            <Image x:Name="MapImage" Source="/Artwork/map.png" RenderTransformOrigin="0.2,0.2" Stretch="UniformToFill" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="-200" Canvas.Top="-300" Width="1320" Height="1800">
                <Image.RenderTransform>
                        <CompositeTransform x:Name="transform" />
                </Image.RenderTransform>
            </Image>
                <tk:GestureService.GestureListener>
                    <tk:GestureListener  PinchStarted="OnPinchStarted" PinchDelta="OnPinchDelta" />
                </tk:GestureService.GestureListener>
            </Canvas>
        </ViewportControl>

经过测试,我找到了解决问题的方法。 最重要的部分是向ViewportControl添加边界-标记,如下所示。 然后,滚动由ViewportControl本身处理。捏手势必须手动完成,但这是可能的,因为事件将到达正确的UI元素(此处:图像)。 在下面的示例中,我使用了来更轻松地处理事件

<ViewportControl x:Name="viewportCtrl" ScrollViewer.VerticalScrollBarVisibility="Visible" VerticalContentAlignment="Center" Bounds="0,0,1320,1800">
            <Canvas x:Name="ParentCanvas" Background="Red" Height="1000" Width="800">
                <Image x:Name="MapImage" Source="/Artwork/map.png" RenderTransformOrigin="0.2,0.2" >
                <Image.RenderTransform>
                        <CompositeTransform x:Name="transform" />
                </Image.RenderTransform>
            </Image>
                <Canvas x:Name="BlueCanvas" Top="100" Left="200" Background="Blue" Height="180" Width="180"></Canvas>
                <tk:GestureService.GestureListener>
                    <tk:GestureListener  PinchStarted="OnPinchStarted" PinchDelta="OnPinchDelta" />
                </tk:GestureService.GestureListener>
            </Canvas>
        </ViewportControl>