【问题标题】:Metro App - Getting the absolute pointer position of touch / mouse using C# / VBMetro App - 使用 C#/VB 获取触摸/鼠标的绝对指针位置
【发布时间】:2012-10-05 22:12:12
【问题描述】:

我一直在尝试这样做,但我没有成功。

我的 Metro 应用程序页面中有一个带有文本块的堆栈面板和一个背景为黑色的网格(名为:grdTheHelper,放置在网格外部)(以便在进入页面时可见)

我的要求是,当我触摸/单击堆栈面板中的文本块时,黑色网格恰好出现在我单击的位置。

这怎么可能。我试过了

 Dim XY As New TranslateTransform

  Private Sub MainPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
    grdTheHelper.RenderTransform = XY
  End Sub

 Private Sub txt1_Tapped(sender As Object, e As TappedRoutedEventArgs) Handles txt1.Tapped
         Dim AbsXY As Point
         AbsXY = e.GetPosition(Me)
         XY.X = AbsXY.X
         XY.Y = AbsXY.Y
    End Sub

但这让网格离我接触的地方有点太远了。我一无所知。我做错什么了吗? TranslateTransform 是否仅用于通过处理 ManipulationDelta 来移动对象?应该使用其他东西吗? 请帮帮我。

【问题讨论】:

    标签: c# vb.net windows-8 microsoft-metro


    【解决方案1】:

    如果你有这样的 XAML:

    <Rectangle x:Name="Rect1" Fill="White" Height="100" Width="100" />
    
    <Rectangle x:Name="Rect2" Fill="Green" Height="100" Width="100" 
                ManipulationMode="All"
                ManipulationDelta="Rect2_ManipulationDelta_1">
        <Rectangle.RenderTransform>
            <CompositeTransform x:Name="Rect2Transform" />
        </Rectangle.RenderTransform>
    </Rectangle>
    

    还有这样的代码:

    private void Rect2_ManipulationDelta_1(object sender, ManipulationDeltaRoutedEventArgs e)
    {
        Rect2Transform.TranslateX += e.Delta.Translation.X;
        Rect2Transform.TranslateY += e.Delta.Translation.Y;
    
        var _Visual = Rect2.TransformToVisual(this);
        var _Location = _Visual.TransformPoint(new Point());
    
        Rect1.SetValue(Canvas.LeftProperty, _Location.X);
        Rect1.SetValue(Canvas.TopProperty, _Location.Y - 100);
    }
    

    在上面的代码中,我将 rect2 保留在屏幕上当前指针所在的任何位置。然后该方法将 rect1 直接放在 rect2 的新位置之上。

    这完全演示了如何从指针设备或相对于屏幕上的对象获取绝对位置。这是您问题的答案!

    【讨论】:

    • 我无法得到它。 :( 实际上使用它会将我的网格移出视野,也就是说,它消失了(我用我的 grid.TransformToVisual(_Page) 替换了 button.TransformToVisual(_Page))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 2011-04-18
    相关资源
    最近更新 更多