1
在Expression Blend中,当您滚动鼠标滚轮时,屏幕上的元素将放大/缩小,并将焦点放在鼠标所在的位置。在Expression Blend中实现缩放
我想在我自己的项目中实现相同的缩放比例,但是我在缩放,移动鼠标然后再次缩放后出现问题。
到目前为止,我正在使用带ScaleTransform的RenderTransform,使用鼠标坐标作为ScaleTransform的centerX和centerY。
有谁知道他们是如何在Expression Blend中做到的?
这是我迄今所做的:
private void ScrollCanvasMouseWheel(object sender, MouseWheelEventArgs e)
{
double zoomAmnt = e.Delta > 0 ? 0.2 : -0.2;
_scaleTransformAmount += zoomAmnt;
if (_scaleTransformAmount < 0.5)
_scaleTransformAmount = 0.5;
Point position = e.GetPosition(ScrollCanvas);
var scaleTransform = ScrollCanvas.RenderTransform as ScaleTransform;
if (scaleTransform == null) throw new ArgumentNullException("scaleTransform");
scaleTransform.ScaleX = _scaleTransformAmount;
scaleTransform.ScaleY = _scaleTransformAmount;
scaleTransform.CenterX = position.X;
scaleTransform.CenterY = position.Y;
}
好吧,这是一种完全不同于我想象的尝试方式,但我会放弃它! '_scalingAnimation'字段是什么类型? – Siyfion 2012-01-18 09:20:43
别担心,我把它变成了一个'DoubleAnimation',而且看起来很有效。至于整体效果,它接近我想要的,但不完全。我发现你不能真正放大到一半,然后非常有效地将变焦“聚焦”切换到不同的区域;它朝着正确的方向稍稍移动,但过了一会儿,我的焦点离开了屏幕。 – Siyfion 2012-01-18 10:04:12
真的吗?这从来没有发生在我身上,也许你从不同的控制中得到了转变应用的东西或什么东西? – 2012-01-18 10:22:58