Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:如何获得变换后的矩形坐标?_C#_Wpf - Fatal编程技术网

C# WPF:如何获得变换后的矩形坐标?

C# WPF:如何获得变换后的矩形坐标?,c#,wpf,C#,Wpf,有没有办法在完成一个任务后检查矩形的坐标 假设我有一个矩形 Rectangle rect = new Rectangle{ Width = 80, Height = 80}; Canvas.setLeft(rect,512); 然后我设置矩形的位置 Rectangle rect = new Rectangle{ Width = 80, Height = 80}; Canvas.setLeft(rect,512); 然后我在把它添加到画布上之后给它设置动画 var anim = new D

有没有办法在完成一个任务后检查矩形的坐标

假设我有一个矩形

Rectangle rect = new Rectangle{ Width = 80, Height = 80};
Canvas.setLeft(rect,512);
然后我设置矩形的位置

Rectangle rect = new Rectangle{ Width = 80, Height = 80};
Canvas.setLeft(rect,512);
然后我在把它添加到画布上之后给它设置动画

var anim = new DoubleAnimation(0, 300, new Duration(TimeSpan.FromSeconds(2)));
var trans = new TranslateTransform();
rect.RenderTransform = trans;
trans.BeginAnimation(TranslateTransform.XProperty, anim);
如何获得变换矩形的新坐标

我试过这个

Canvas.GetLeft(rect[i].getRect);
结果仍然是512

我正在努力实现的目标:
我试图在矩形到达某个坐标后将其删除。

也许我的问题解决了,但我总是想知道是否还有其他方法: 所以,我真的很感激你能给我另一个答案

这就是我所做的。 Canvas.Left和TranslateTransform都可以有动画。所以对于我的简单问题,我不再把它混在一起了。我没有用翻译。 只要做:

rect.BeginAnimation(Canvas.LeftProperty,anim);
这样,我们可以在制作动画时捕捉到矩形的坐标。 简单地做:

Canvas.GetLeft(rect);
我认为这是最简单的方法


无论如何,感谢克莱门斯:

显然,如果将Canvas.Left设置为512,然后在x方向执行300像素的平移变换,那么相对于画布的最终有效x位置是512+300=812像素。但是,为了保持简单,您不应该混合使用,只使用Canvas.Left或TranslateTransform.X。两个都可以动画。谢谢克莱姆。我刚刚意识到,画布本身可以制作动画。所以我使用的只是rect.BeginAnimationCanvas.XProperty,anim;我可以通过动画制作Canvas.GetLeftrect: