wpf 关于鼠标换轮放大缩小只有120的问题

本文分享了在WPF中使用TransformGroup实现图形平滑缩放的方法,解决了直接使用ScaleTransform时图片放大缩小速度过快的问题,并为后续加入旋转和平移效果打下基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

          小白自己在做用滑轮控制图形(主要是指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还是很强大的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值