获取网格内的对象坐标
本文关键字:对象 坐标 网格 获取 | 更新日期: 2023-09-27 17:58:14
我有一个网格,看起来像这样:
<grid name="my_grid"></grid>
然后我有一个名为paramBox的类对象,名为myBox。此对象插入到网格中,如下所示:
my_grid.Children.Add(myBox);
现在我的问题是:有没有办法在网格内获取myBox的坐标(x和y值)?我尝试过使用PointToScreen,但没有任何运气。如果我不在类/网格中声明任何x和y值,是否可以获得坐标?
您可以使用Margin属性来移动控件。
边距是此对象和其他对象之间的空间将在布局创建UI时相邻。其他对象参与布局的可能是对等对象(例如其他对象在公共父控件的集合中),或者也可能是对象在可视化树中的父级。
或者按照@m-y的建议使用画布而不是网格。这是演示
我建议您使用Canvas而不是Grid。然后,如果你要移动一个元素,你可以这样做(这可能不完全适合你的问题,但我可能有一些想法):
关于元素MouseDown
事件:
private void Element _MouseDown(object sender, MouseButtonEventArgs e)
{
Point position = e.GetPosition(myCanvas);
this.myElement.RenderTransform =
new TranslateTransform(position.X - myElement/ 2.0,
position.Y - myElement/ 2.0);
this.myCanvas.MouseMove += myCanvas_MouseMove;
this.myCanvas.MouseUp += myCanvas_MouseUp;
}
private void myCanvas_MouseMove(object sender, MouseEventArgs e)
{
Point position = e.GetPosition(this.myCanvas);
((TranslateTransform)(this.myElement.RenderTransform)).X = position.X - myElement/ 2.0;
//
((TranslateTransform)(this.myElement.RenderTransform)).Y = position.Y - myElement/ 2.0;
}
private void myCanvas_MouseUp(object sender, MouseEventArgs e)
{
this.myCanvas.MouseMove -= myCanvas_MouseMove;
this.myCanvas.MouseUp -= myCanvas_MouseUp;
}