2014-10-22 86 views
0

我在画布上有一个textblock控件,可以像第一个和第二个图像中所示的那样向右水平拖动。文本框在画布上拖动方向旋转后改变

然后,在将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工具包的手势监听器,而不是使用内置的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>