大家好,最近我为 Windows Phone 8 设备创建了换脸应用程序,其中我设计了一个带有两个图像控件的页面
第一个图像作为背景,第二个图像控件作为前景。
我已将“GestureListener”添加到我的第一个图像控件(背景)中,我必须使用“toolkit:GestureService.GestureListener”“捏合、放大、缩小、拖动”该背景图像。
我做的一切都很好,就像我可以成功地捏合、缩放、拖动图像......但是,
问题是“我无法从触摸屏幕上的手指的任何地方捏合或拖动图像”,因此捏合缩放或拖动对我来说很难放大/缩小或拖动图像。,
但是在 I-Phone/i-pad/i-pod 和所有 Android 设备中,我可以通过捏合来放大/缩小或通过触摸屏幕上的任何位置来拖动图像。,
就像我已经说过的那样,我的第一个图像是可以添加手势控制的背景,第二个图像是无法缩放或拖动的普通图像控制。,
这是我的代码。
我的 XAML 代码:
<Grid x:Name="ContentPanel" Grid.RowSpan="2">
<Canvas x:Name="screenArea" Width="400" Height="580" >
<Image x:Name="myImage" Width="400" Height="580" RenderTransformOrigin="0.5, 0.5" CacheMode="BitmapCache" >
<Image.RenderTransform>
<TransformGroup>
<CompositeTransform x:Name="MyMustacheTransformation" />
</TransformGroup>
</Image.RenderTransform>
<toolkit:GestureService.GestureListener>
<toolkit:GestureListener PinchStarted="OnPinchStarted"
PinchDelta="OnPinchDelta"
DragDelta="OnDragDelta"/>
</toolkit:GestureService.GestureListener>
</Image>
<Image x:Name="frameImage" Width="400" Height="580" Stretch="Fill"/>
</Canvas>
</Grid>
我的inch_start、Drag_delta、pinch_delta的CS代码是
private void OnPinchStarted(object sender, PinchStartedGestureEventArgs e)
{
_initialAngle = MyMustacheTransformation.Rotation;
_initialScale = MyMustacheTransformation.ScaleX;
}
private void OnPinchDelta(object sender, PinchGestureEventArgs e)
{
MyMustacheTransformation.Rotation = _initialAngle + e.TotalAngleDelta;
MyMustacheTransformation.ScaleX = _initialScale * e.DistanceRatio;
MyMustacheTransformation.ScaleY = _initialScale * e.DistanceRatio;
}
private void OnDragDelta(object sender, DragDeltaGestureEventArgs e)
{
Image rect = sender as Image;
TranslateTransform transform = rect.RenderTransform as TranslateTransform;
MyMustacheTransformation.TranslateX += e.HorizontalChange;
MyMustacheTransformation.TranslateY += e.VerticalChange;
}
我希望您能理解我的问题,如果我的话不清楚,请见谅。
如果您已经在 Android/i-phone/pod/pad 设备上使用过换脸应用程序,则意味着他们可以轻松理解您的期望。,
我的目标是:
“我可以通过捏合来放大/缩小,从触摸布局上的任何位置拖动图像......就像在 iPhone/Pod/Pad 和 Android 设备中一样”
我已经挣扎了几周了。请提供一些解决方案。
如果您提供任何示例代码,这对我来说可能更有用。,
提前谢谢大家。
最佳答案
问题在于您将 GestureListener
附加到了图像,因此只有在触摸图像时才会收到手势。
将监听器附加到最外面的Grid
。
关于c# - 在 Windows Phone 8 应用程序中捏合缩放、将图像拖动到屏幕上的任意位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21645176/