小白自己在做用滑轮控制图形(主要是指geometrygroup)放大缩小时,发现滑轮从-120到+120太快,图片瞬间放大缩小,大小都是定数,效果没有可观性。代码如下:
private void mycanvas_MouseWheel(object sender, MouseWheelEventArgs e)
{
ScaleTransform scaleTransform = new ScaleTransform();
scaleTransform.CenterX = MousePostion.X;
scaleTransform.CenterY = MousePostion.Y;
scaleTransform.ScaleX = (double)e.Delta*1.0 / 1200+1; //宽度放大 //此处放大倍数有问题
scaleTransform.ScaleY = (double)e.Delta*1.0 / 1200+1; //高度放大
geometry.Transform = scaleTransform;
}
在多次尝试改过1200数值大小还是没有那种慢速放大缩小效果后,就想要放弃了。
因为要和旋转,平移效果结合。当加上
TransformGroup mini = new TransformGroup();
mini.Children.Add(scaleTransform);
惊奇发现居然可以了。实现了控速放大缩小以及无限放大缩小(在一定范围内)。
当然,再用 TransformGroup时要小心,尤其在mousemove事件里用的时候,会出现意想不到的错误,比如旋转角度出现累加,平移距离出现累加,经小白多多试验分析,终于解决了。下篇咱们在分析这两点。
当然大神觉得小白这些太low了,但作为初学者,总会遇到各种问题,上网查查资源太少,对熟练人员来说的小问题,可能会让我们费上好大功夫。我的这个问题我就没搜到。所以写此用以交流。
要相信WPF还是很强大的。