博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF: 旋转Thumb后,DragDelta移动距离出错的解决
阅读量:5758 次
发布时间:2019-06-18

本文共 999 字,大约阅读时间需要 3 分钟。

当Thumb跟随Grid旋转90度后,拖拽控件时会飞掉。

private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)        {            Canvas.SetLeft(gridMain, Canvas.GetLeft(gridMain) + e.HorizontalChange);            Canvas.SetTop(gridMain, Canvas.GetTop(gridMain) + e.VerticalChange);        }

 

 

这是由于坐标系不统一造成的。Canvas.SeltLeft 和 Canvas.SetTop是用的Canvas坐标系。而Thumb的e.HorizontalChange 和 e.VerticalChange 是根据鼠标相对于Thumb自身坐标系计算出来的, 两个坐标系有个90度的角度差。将e.HorizontalChange 和 e.VerticalChange转换到Canvas的坐标系下,拖拽就没问题了。如下:

private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)        {            Point ptChange = rotate.Transform(new Point(e.HorizontalChange, e.VerticalChange));            Canvas.SetLeft(gridMain, Canvas.GetLeft(gridMain) + ptChange.X);            Canvas.SetTop(gridMain, Canvas.GetTop(gridMain) + ptChange.Y);        }

转载地址:http://wivkx.baihongyu.com/

你可能感兴趣的文章
vim在多文件中复制粘贴内容
查看>>
Android ContentObserver
查看>>
文章“关于架构优化和设计,架构师必须知道的事情”
查看>>
疯狂java学习笔记1002---非静态内部类
查看>>
ISA2006实战系列之一:实战ISA三种客户端部署方案(上)
查看>>
TCP服务器
查看>>
U-Mail邮件系统与泛微OA系统一体化操作指南
查看>>
AC旁挂三层交换机管理ap,二层接入ap心得
查看>>
JS中比较数字大小
查看>>
springcloud 学习-eureka搭建-为eureka添加认证
查看>>
jQuery插件的开发
查看>>
基础,基础,还是基础之JAVA基础
查看>>
如何成为一个C++高级程序员
查看>>
ant android 打包签名和渠道
查看>>
一个简单的接口,被调用并同步给出响应的方法
查看>>
Hadoop序列化与压缩
查看>>
我的友情链接
查看>>
显式锁(第十三章)
查看>>
SCCM的证书配置PKI
查看>>
看linux书籍做的一些重要笔记(2011.07.03更新)
查看>>