[英]How can I pop a control out of it's container to make it full screen when clicked in Silverlight/Wp7?
[英]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.