Windows phone 8 如何在画布控件中获取图像的x和y坐标

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

您好,我正在使用Windows Phone 8应用程序,我想在画布控件中获取图像的x,y坐标,当图像拖放并将图像设置为特定的x,y坐标时,您可以使用GeneralTransform获取位置。例如,如果在xaml中有:

<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;


        }