UWP操纵三角洲

时间:2017-12-29 21:52:37

标签: c# canvas textbox windows-10-universal image-manipulation

是否有办法使用ManipulationDeltaHandler操作的元素只有在用户点击或触摸该特定元素时才会被操作?

到目前为止,我有以下代码:

public void AddTextButton_Click(object sender, RoutedEventArgs e)
     {
        TextBox MyTextBox = new TextBox();
        MyTextBox.Background = new SolidColorBrush(Colors.White);

        MyTextBox.PlaceholderText = "Text";
        MyTextBox.Width = 250;
        MyTextBox.Height = 100;

        ManipulationMode = ManipulationModes.All;
        MyTextBox.RenderTransform = textBoxTransforms;

        AddHandler(ManipulationDeltaEvent, new ManipulationDeltaEventHandler(TextBox_ManipulationDelta), true);

       parentCanvas.Children.Add(MyTextBox);
    }

    void TextBox_ManipulationDelta(object sender,
        ManipulationDeltaRoutedEventArgs e)
    { 
        dragTextBox.X += e.Delta.Translation.X;
        dragTextBox.Y += e.Delta.Translation.Y;

        resizeTextBox.ScaleX *= e.Delta.Scale;
        resizeTextBox.ScaleY *= e.Delta.Scale;
    }

当触摸/捏住画布上的任何位置时,文本框将移动/调整大小。我希望它只有当用户直接触摸文本框的边界时才会发生这种情况。有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

当触摸/捏住画布上的任何位置时,文本框将移动/调整大小。

如果您未指定使用UIElment属性和AddHandler方法设置的ManipulationMode,则它们将对当前整页生效。

如果您只希望它们对TextBox产生影响,则应按如下方式指定:

MyTextBox.ManipulationMode = ManipulationModes.All;    
MyTextBox.AddHandler(ManipulationDeltaEvent, new ManipulationDeltaEventHandler(TextBox_ManipulationDelta), true);

请注意,还应指定ManipulationMode,否则Manipulation的{​​{1}}将无效。