捏合调整大小,拖动以移动图像控件 - 实现WP 8.1

时间:2016-01-14 07:42:51

标签: c# xaml windows-phone-8 windows-phone-8.1

我移动图像控件的代码是:

<Grid Name="grid" Width="400" Height="400" ManipulationMode="All"  
  ManipulationDelta="Grid_ManipulationDelta_1" Margin="0,58,0,182">
    <Grid.RenderTransform>
        <CompositeTransform x:Name="transform" />
    </Grid.RenderTransform>
    <Image x:Name="Image1" Source="Assets/SmallLogo.png"  Stretch="None" 
      HorizontalAlignment="Center" VerticalAlignment="Center"  />
</Grid>

操纵delta有代码:

private void Grid_ManipulationDelta_1(object sender, ManipulationDeltaRoutedEventArgs e)
{
    if (e.PointerDeviceType == PointerDeviceType.Touch)
    {
        this.transform.TranslateX += e.Delta.Translation.X;
        this.transform.TranslateY += e.Delta.Translation.Y;
        OutText.Text = sender.ToString();
    }
    else
    {
        e.Handled = true;
    }
}

当我在网格上的任何地方移动图像时,这非常有效。

现在为了调整图像控件的大小,我有不同的实现,

<ScrollViewer x:Name="scrl2" SizeChanged="scrl_SizeChanged"  ZoomMode="Enabled" 
  HorizontalScrollMode="Enabled" VerticalScrollMode="Enabled" 
  HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible"
  MinZoomFactor="0.1" MaxZoomFactor="10" Margin="0" VerticalAlignment="Bottom">
    <Image Source="Assets/SmallLogo.png" Stretch="None" 
      HorizontalAlignment="Center" VerticalAlignment="Center"  />
</ScrollViewer>

滚动查看器可以在这里调整大小,图像是小孩,所以它也可以。它完全改变了运行时的大小,但请注意这是不同的代码。

我想在图像控制上实现两个场景,这似乎是合乎逻辑的,所以我像这样编辑我的xaml:

<Grid Name="grid" Width="400" Height="400" ManipulationMode="All"
  ManipulationStarted="Grid_ManipulationStarted_1"
  ManipulationCompleted="Grid_ManipulationCompleted_1"
  ManipulationDelta="Grid_ManipulationDelta_1" Margin="0,58,0,182">
    <Grid.RenderTransform>
        <CompositeTransform x:Name="transform" />
    </Grid.RenderTransform>

    <ScrollViewer x:Name="scrl2" SizeChanged="scrl_SizeChanged"
      ZoomMode="Enabled" HorizontalScrollMode="Enabled" 
      VerticalScrollMode="Enabled" HorizontalScrollBarVisibility="Visible" 
      VerticalScrollBarVisibility="Visible"  
      MinZoomFactor="0.1" MaxZoomFactor="10" Margin="0" VerticalAlignment="Bottom">
        <Image x:Name="Image1" Source="Assets/SmallLogo.png"  Stretch="None" 
          HorizontalAlignment="Center" VerticalAlignment="Center"  />
    </ScrollViewer>
</Grid>

RenderTransform应该注意移动,ScrollViewer应该捏一下。但这不起作用。在图像仅在滚动查看器中的单独代码中 - 缩放到缩放工作,当图像在网格中时 - 拖动移动工作。

在上面的代码中,我将图像放在ScrollViewer中,而ScrollViewer放在网格中,只有缩放到缩放才有效,移动不起作用。我试图撤消水平垂直对齐设置(将它们设置为null),但这是不可能的。图像会调整大小,但始终保持在对齐设置中设置的位置。

此实施有什么问题?

0 个答案:

没有答案