Windows phone 8 如何在画布控件中获取图像的x和y坐标
您好,我正在使用Windows Phone 8应用程序,我想在画布控件中获取图像的x,y坐标,当图像拖放并将图像设置为特定的x,y坐标时,您可以使用GeneralTransform获取位置。例如,如果在xaml中有:Windows phone 8 如何在画布控件中获取图像的x和y坐标,windows-phone-8,Windows Phone 8,您好,我正在使用Windows Phone 8应用程序,我想在画布控件中获取图像的x,y坐标,当图像拖放并将图像设置为特定的x,y坐标时,您可以使用GeneralTransform获取位置。例如,如果在xaml中有: <Canvas Name="mycanvas" Grid.Row="3"> <Image Name="myImage" Source="/Resources/Image1.png" HorizontalAlignment="Center" Vertica
<Canvas Name="mycanvas" Grid.Row="3">
<Image Name="myImage" Source="/Resources/Image1.png" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="65"/>
</Canvas>
您可以在上阅读更多有关拖放的信息。我建议您使用Windows Phone Toolkit GestureListener: 更多说明如下: 以下是一些例子: Xaml:
private Point Get_Position()
{
GeneralTransform generalTr = mycanvas.TransformToVisual(myImage);
Point current = generalTr.Transform(new Point(0, 0));
return current;
}
<Canvas x:Name="ImageCanvas" Margin="0,100,0,0" Background="Gray" Canvas.ZIndex="-1" SizeChanged="Root_OnSizeChanged">
<Canvas.Clip>
<RectangleGeometry x:Name="RectGeometry"/>
</Canvas.Clip>
<Image Name="image"
Source="Your Source"
Stretch="None"
HorizontalAlignment="Center"
VerticalAlignment="Center" Canvas.ZIndex="-1">
<Image.RenderTransform>
<TransformGroup >
<MatrixTransform x:Name="previousTransform" />
<TransformGroup x:Name="currentTransform">
<ScaleTransform x:Name="scaleTransform" />
<RotateTransform x:Name="rotateTransform" />
<TranslateTransform x:Name="translateTransform"/>
</TransformGroup>
</TransformGroup>
</Image.RenderTransform>
<toolkit:GestureService.GestureListener>
<toolkit:GestureListener DragStarted="OnDragStarted"
DragDelta="OnDragDelta"
DragCompleted="OnDragCompleted"
PinchStarted="OnPinchStarted"
PinchDelta="OnPinchDelta"
PinchCompleted="OnPinchCompleted" GestureCompleted="GestureListener_OnGestureCompleted" />
</toolkit:GestureService.GestureListener>
</Image>
</Canvas>
private void OnDragStarted(object sender, DragStartedGestureEventArgs args)
{
_isDragging = args.OriginalSource == image;
_xChange = _yChange = 0;
}
private void OnDragDelta(object sender, DragDeltaGestureEventArgs args)
{
if (_isDragging)
{
translateTransform.X += args.HorizontalChange;
translateTransform.Y += args.VerticalChange;
}
}
private void OnDragCompleted(object sender, DragCompletedGestureEventArgs args)
{
if (_isDragging)
{
_isDragging = false;
}
_dragCompleted = true;
}