旋转后,画布拖动方向上的文本框已更改

时间:2014-10-22 08:36:05

标签: c# canvas rotation windows-phone transform

我在画布上有一个文本块控件,可以正确地水平向右拖动,如第一张和第二张图片所示。

然后在我对其CompositeTransform应用90度旋转角度后,向右拖动文本块实际上将其垂直向顶部移动,如第三和第四图像所示。我错过了什么?

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

1 个答案:

答案 0 :(得分: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>