2014-10-22 4 views
0

У меня есть элемент управления текстовым блоком на холсте, который можно перетаскивать по горизонтали вправо правильно, как показано на первом и втором изображении.Текстовое поле на холсте, которое изменилось после поворота

Затем после I угла поворота на 90 градусов применяется к его CompositeTransform, перетаскивая текстовый блок вправо, фактически перемещая его по вертикали вверх, как показано третьим и четвертым изображениями. Что мне не хватает?

public CompositeTransform CurrentTransform = new CompositeTransform(); 
..... 
TextBlock.RenderTransform = CurrentTransform; 

.... 
    private double angle; 
    public double Angle 
    { 
     get 
     { 
      return angle; 
     } 
     set 
     { 
      if (angle != value) 
      { 
       angle = value;  
       CurrentTransform.CenterX = 0; 
       CurrentTransform.CenterY = 0;    
       CurrentTransform.Rotation = angle;           
      } 
     } 
    }  

Перемещение текстового поля обрабатывается внутри

private void CanvasText_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e) 
    { 
      CurrentTransform.TranslateX += e.DeltaManipulation.Translation.X; 
      CurrentTransform.TranslateY += e.DeltaManipulation.Translation.Y; 
    } 

enter image description here enter image description here enter image description here enter image description here

ответ

0

Для тех, кто находится в той же лодке, мне удалось это исправить путем присоединения внешних прослушиватель жестов из Windows Phone toolkit вместо использования встроенного события CanvasText_ManipulationDelta. Перетаскивание текстового поля работает корректно даже после поворота.

 <Grid HorizontalAlignment="Center" VerticalAlignment="Center"> 
      <Image x:Name="ImageOriginal" 
        Source="{Binding WbPreview, Mode=TwoWay}" 
        Stretch="Uniform"/>     
      <Grid x:Name="GridDraw" 
        Tap="GridDraw_Tap" 
        Background="Transparent"/> 
      <Canvas x:Name="CanvasText"> 
       <toolkit:GestureService.GestureListener> 
        <toolkit:GestureListener Tap="GestureListener_Tap" 
        DragDelta="GestureListener_DragDelta"/> 
       </toolkit:GestureService.GestureListener> 
      </Canvas> 

     </Grid> 
Смежные вопросы