【发布时间】:2014-08-07 07:34:26
【问题描述】:
我有一个奇怪的问题,我在 Grid 中注册了事件 TouchMove
_outerGrid.TouchMove += _outerGrid_TouchMove;
我保存最后一个接触点,并计算最后一个接触点和实际接触点之间的位移。
double dx = actualPoint.X - _lastMovePoint.X;
double dy = actualPoint.Y - _lastMovePoint.Y;
现在,如果我尝试相应地移动 UIElement,我会发现 Y 属性正确更新,但 X 没有。
TransformGroup tg = element.RenderTransform as TransformGroup;
TranslateTransform t = tg.Children[1] as TranslateTransform;
t.X += dx; //Remains unchanged after the sum, and dx != 0
t.Y += dy;
我之前创建了一个带有 ScaleTransform 和 TranslateTransform 的 TransformGroup 以将元素放置在带有动画的正确位置...现在如果我尝试移动它,它就不起作用了
double startPointX = -100;
double accelRatio = 0.5;
double decelRatio = 0.5;
element.RenderTransformOrigin = new Point(0.5, 0.5);
TransformGroup tg = tg = new TransformGroup();
TranslateTransform t = new TranslateTransform();
ScaleTransform s = new ScaleTransform();
tg.Children.Add(s);
tg.Children.Add(t);
element.RenderTransform = tg;
DoubleAnimation xAnim = new DoubleAnimation();
xAnim.From = displX - startPointX;
xAnim.To = displX;
xAnim.Duration = TimeSpan.FromMilliseconds(dur);
xAnim.BeginTime = TimeSpan.FromMilliseconds(delay);
xAnim.AccelerationRatio = accelRatio;
xAnim.DecelerationRatio = decelRatio;
DoubleAnimation sAnim = new DoubleAnimation();
sAnim.From = 0;
sAnim.To = 1;
sAnim.Duration = TimeSpan.FromMilliseconds(dur);
sAnim.BeginTime = TimeSpan.FromMilliseconds(delay);
DoubleAnimation oAnim = new DoubleAnimation();
oAnim.From = 0;
oAnim.To = 1;
oAnim.Duration = TimeSpan.FromMilliseconds(dur);
oAnim.BeginTime = TimeSpan.FromMilliseconds(delay);
s.BeginAnimation(ScaleTransform.ScaleXProperty, sAnim);
s.BeginAnimation(ScaleTransform.ScaleYProperty, sAnim);
t.BeginAnimation(TranslateTransform.XProperty, xAnim);
t.Y = displY;
element.BeginAnimation(OpacityProperty, oAnim);
我注意到,如果我以动画 X 的方式为 Y 属性设置动画,那么 Y 也会开始出现同样的问题。所以它与动画属性有关,然后尝试设置它
有人知道是什么导致了这种行为吗?
谢谢。
【问题讨论】:
-
你的问题就像我给你看我车上的油箱盖,说我加了油,但车子不开……这是怎么回事?您需要做的是提供concise, working code example that demonstrates your problem,然后我们可以对其进行测试,并希望为您找到解决方案。
-
试图用更多信息更新它
标签: c# wpf transformation uielement