【发布时间】:2015-05-14 11:22:33
【问题描述】:
我有这个 Xaml:
<Grid x:Name="DrawingGrid" Visibility="Collapsed">
<AppBarButton x:Name="ExitDrawingButton" Icon="Cancel" Click="ExitDrawingButton_Click"></AppBarButton>
<ScrollViewer x:Name="DScrollViewer" ManipulationMode="All" MaxZoomFactor="2.0" MinZoomFactor="1.0" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" DoubleTapped="DScrollViewer_DoubleTapped" Width="1140" Height="770">
<Canvas x:Name="inkCanvas" Background="Transparent" Width="1140" Height="770">
<StackPanel x:Name="DStackPanel" Orientation="Horizontal" Margin="0,0,0,0">
<Image x:Name="DImage0" HorizontalAlignment="Left" Source="{Binding nextImage}" Width="570" Canvas.ZIndex="0"/>
<Image x:Name="DImage1" HorizontalAlignment="Left" Source="{Binding nextImage}" Width="570" Canvas.ZIndex="0"/>
</StackPanel>
</Canvas>
</ScrollViewer>
</Grid>
我正在使用 CanvasManager.cs 类在Canvas 上绘图,它工作正常。
现在我需要放大Canvas:将Canvas(墨水)和其中包含的内容(StackPanel + 图像)一起缩放。
在doubleTapping ScrollViewer 包含Canvas 我有这个方法:
private async void DScrollViewer_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
{
Point point = e.GetPosition(DScrollViewer);
if (DScrollViewer.ZoomFactor == 1)
{
await Task.Delay(300);
DScrollViewer.ChangeView(point.X, point.Y, 2.0F, false);
}
else
{
await Task.Delay(300);
DScrollViewer.ChangeView(point.X, point.Y, 1.0F, false);
}
}
结果是:只有 Canvas(它的 Ink)在缩放,StackPanel 和它的图像留在原地,同样的比例,完好无损!
我做错了什么?
【问题讨论】:
-
我查看了您的演示,发现
Images实际上位于不同的ScrollViewer(LScrollViewer) 内,而ScrollViewer(DScrollViewer) 负责缩放.这可能就是这些图像不受影响的原因。
标签: c# canvas windows-store-apps windows-8.1 scrollviewer