繁体   English   中英

在Silverlight / WP7应用程序中使用MultiTouchBehavior时,如何以编程方式查找缩放比例,旋转和转换值?

[英]How can I programmatically find the scale, rotate, and translate values when using the MultiTouchBehavior in a Silverlight/WP7 app?

好的,这似乎是一个很愚蠢的问题,但是我还不太习惯Silverlight领域。 我正在研究引用Multitouch.Behaviors.WP7 codeplex项目( http://multitouch.codeplex.com/ )的Silverlight / WP7应用程序。

<Canvas x:Name="MyCanvas">
      <Image Source="Images/image.png"
           x:Name="MyImage" Width="120" 
           Canvas.Left="240" Canvas.Top="235">
            <i:Interaction.Behaviors>
                <tb:MultiTouchBehavior
        AreFingersVisible="True" 
        IsDebugModeActive="True" 
        IsMockActive="True" 
        IsRotateEnabled="True" 
        IsScaleEnabled="True" 
        IsTranslateXEnabled="True" 
        IsTranslateYEnabled="True" 
        MaximumScale="100"  
        MinimumScale="0.5"/>
       </i:Interaction.Behaviors>
  </Image>

显然,用户可以使用多点触摸功能来拖动图像,旋转图像并缩放图像。 如何以编程方式缩放/旋转/转换图像的值?

MultitouchBehavior使用CompositeTransform作为与其关联的对象的RenderTransform。 因此,您可以使用类似于以下代码的代码来访问转换后的值:

var transform = this.MyImage.RenderTransform as CompositeTransform;
var currentScaleX = transform.ScaleX;
var angle = transform.Rotation;
var offsetX = transform.TranslateX;

您需要使用Image.RenderTransform。 看到这个帖子(特别是GestureHelper部分- http://timheuer.com/blog/archive/2010/09/16/silverlight-toolkit-for-windows-phone-7-released.aspx )。

<Image x:Name="GesturedImage" Source="dividbyzero.jpg" 
       HorizontalAlignment="Center" VerticalAlignment="Center" 
       Width="450" RenderTransformOrigin="0.5,0.5">
    <Image.RenderTransform>
        <ScaleTransform x:Name="ImageScaling" ScaleX="1" ScaleY="1" />
    </Image.RenderTransform>
    <toolkit:GestureService.GestureListener>
        <toolkit:GestureListener PinchDelta="OnPinchDelta" />
  </toolkit:GestureService.GestureListener>
</Image>

然后使用DistanceRatio来获取翻译的值:

private void OnPinchDelta(object sender, PinchGestureEventArgs e)
{
   ImageScaling.ScaleX = e.DistanceRatio;
   ImageScaling.ScaleY = e.DistanceRatio;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM