2017-02-25 5 views
0

Ich schreibe einen Code, der ein Bild verschiebt. Es klappt. Ich brauche das absolute x, y nach dem Verschieben wie bekomme ich sie? danke mein Code gibt mir nur die relativen Punkte. :uwp GetcurrentPoint image

private static void MyImage_PointerMoved(object sender, PointerRoutedEventArgs e) 
    { 
     Pointer ptr = e.Pointer; 
     if (ptr.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse) 
     { 
      // To get mouse state, we need extended pointer details. 
      // We get the pointer info through the getCurrentPoint method 
      // of the event argument. 
      Windows.UI.Input.PointerPoint ptrPt = e.GetCurrentPoint(micky.MyImage); 
      var transform = (micky.MyImage.RenderTransform as CompositeTransform); 
      double imagex = e.GetCurrentPoint(micky.MyImage).Position.X; 
      double imageY = e.GetCurrentPoint(micky.MyImage).Position.Y; 

Antwort

0

Nicht sicher, was Sie tun möchten. Wenn Sie nur die absolute Position des Bildes erhalten möchten. Sie könnten TransformToVisual und TransformPoint Methode verwenden.

<Image x:Name="pic" Source="Assets/1.jpg"/> 
var trans = pic.TransformToVisual(Window.Current.Content); 
Point position = trans.TransformPoint(new Point(0, 0)); 

Aber ich Ihren Code überprüft, ich denke, Sie Ihr Bild verschieben möchten. Wenn dies der Fall ist, sollte das Ereignis Manipulation Ihr Ziel erfüllen.

<Image x:Name="pic" Source="Assets/1.jpg" ManipulationMode="All" ManipulationDelta="Image_ManipulationDelta" Height="100" Width="200"> 
     <Image.RenderTransform> 
      <TranslateTransform x:Name="translateTransform"></TranslateTransform> 
     </Image.RenderTransform> 
</Image> 
private void Image_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e) 
    { 
     translateTransform.X += e.Delta.Translation.X; 
     translateTransform.Y += e.Delta.Translation.Y; 
     System.Diagnostics.Debug.WriteLine("Manipulation: X: " + translateTransform.X + ", Y: " + translateTransform.Y); 
    }