gpt4 book ai didi

windows-phone-7 - 触发 DragStartedEvent 时获取对象的绝对原点

转载 作者:行者123 更新时间:2023-12-04 05:15:12 25 4
gpt4 key购买 nike

我有一个类似于下图所示的应用程序(抱歉,我使用了 iPhone 之类的模型)

img1

该应用程序有一个图像作为背景(使用 Canvas 显示,它占据整个视觉屏幕大小),然后另一个形状(在这种情况下为红色矩形)将显示在背景上方,可以拖动和捏缩放。

现在的问题是 :

如何获取矩形左上角的坐标(从屏幕左上角开始,即 Canvas 的左上角)?

更新

根据@Will 的建议,在这种情况下,我目前通过 DragDelta 移动矩形。使用 TranslateTransform在里面,比如:

rectTransform.X += e.HorizonalChange;
rectTransform.Y += e.VerticalChange;

矩形是在代码中定义的,而不是在 XAML 中定义的:
rect.Stroke = new SolidColorBrush(Colors.Green);
rect.StrokeThickness = 10;
rect.Fill = new SolidColorBrush(Colors.Transparent);
rect.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
rect.VerticalAlignment = System.Windows.VerticalAlignment.Center;
rect.Width = 200;
rect.Height = 200;

canvas.Children.Add(rect);

Canvas 是在 XAML 中定义的。

我试过的 :

最初我试图在 Drag 事件开始时获得起点,但是通过使用 DragStarted(object sender, DragStartedGestureEventArgs e) ,我只能输出被触摸的点的坐标,但不能输出这个矩形左上角的点。

它类似于 DragCompleted将返回手势结束点的事件。

那么我有没有机会获得红色矩形的原点坐标?

最佳答案

我在 Google 和 MSDN 上花了将近一个下午,然后终于在 SO 上找到了这个:

How to get the position of an element in a StackPanel?

这启发了我使用类似的方法。在那种情况下,他们设法获得了 UI 元素的绝对坐标。同样,就我而言,我打算知道红色矩形到背景 Canvas 的绝对原点(坐标)。

我使用:

GeneralTransform gt = canvas.TransformToVisual(rect);
Point currentPos = gt.Transform(new Point(0, 0));

然后 currentPos 是矩形的当前位置(它的绝对位置,相对于 Canvas )。

这是 TransformToVisual in MSDN的引用

只有一件事需要注意:X 和 Y 的值为负。

关于windows-phone-7 - 触发 DragStartedEvent 时获取对象的绝对原点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14362774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com