博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF使用TransformToAncestor获取元素的相对坐标
阅读量:4091 次
发布时间:2019-05-25

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

原理:WPF的界面元素是由Visual元素构成的。在可视元素树Visual中,获取某个元素相对于它的父级元素(Ancestor)的坐标,可以使用TransformToAncestor与Transform方法。

指定中心点,获取相对坐标

例子一:确定TextBlock相对于窗体的位置

// Return the general transform for the specified visual object.GeneralTransform generalTransform1 = myTextBlock.TransformToAncestor(this);// Retrieve the point value relative to the parent.Point currentPoint = generalTransform1.Transform(new Point(0, 0));//窗体位置为(0,0)

例子二:获取Button的中心点,相对于Canvas的位置

private void MyButton_Click(object sender, RoutedEventArgs e)        {            Point current = new Point();            current=  this.myButton.TransformToAncestor(this.myCanvas).Transform(new Point(myButton.Width/2, myButton.Height/2));//获取中心点的位置            MessageBox.Show(current.X.ToString() +  "  "+ current.Y.ToString ());        }

 

获取相对于屏幕的坐标

           

Point controlPoint = new Point(0, 0);            controlPoint = ((TextBox)sender).PointToScreen(controlPoint);//获取控件相对于屏幕的位置            mkeyBoard.Top = controlPoint.Y + ((TextBox)sender).ActualHeight;            mkeyBoard.Left = controlPoint.X-20;

 获得子元素相对于父元素位置和宽高

后台C# private void MainWindow_Loaded(object sender, RoutedEventArgs e) { Rect itemRect = VisualTreeHelper.GetDescendantBounds(rct);//itemRect是0,0,100,80 Rect itemBounds = rct.TransformToAncestor(cv).TransformBounds(itemRect);// itemBounds是309,181,100,80 Console.WriteLine(itemRect); Console.WriteLine(itemBounds); }

 

参考

 

 

 

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

你可能感兴趣的文章
Java中ArrayList初始化的4种方法
查看>>
Vue中格式化对比json串插件
查看>>
Java将Object类型对象转换为指定的实体类对象
查看>>
Mysql中不同字段类型对应的Java类型
查看>>
使用Gson判断两个Json字符串是否相等
查看>>
Mybatis中获取新添加记录的主键id且不受并发影响的方法
查看>>
Mybatis中使用selectKey标签得到新增数据的主键
查看>>
Java中ArrayList的删除元素方法总结
查看>>
Java判断集合中是否存在某个元素的方法
查看>>
Java中split()用法
查看>>
Java中打印程序执行的开始时间和结束时间
查看>>
Java中实现对象克隆的方法
查看>>
Java深拷贝和浅拷贝的区别
查看>>
Mybatis的xml文件中大于小于符号的正确替换写法
查看>>
Mysql获取所有查询结果中N条记录
查看>>
Gson实现将Json字符串转为Map类型
查看>>
Git查看与切换分支
查看>>
Git合并分支
查看>>
Mybatis中useGeneratedKeys、keyProperty、keyColumn的介绍
查看>>
Spring的@Scheduled注解使用介绍
查看>>