• WPFの获取任意元素的位置


    如果布局在Grid中:

    方法一:
      //_stackPanel为子元素,_grid为父元素
      Point point = _stackPanel.TranslatePoint(new Point(0, 0), (UIElement)_grid);搜索
      
    方法二:
      //_stackPanel为子元素,_grid为父元素
      GeneralTransform generalTransform = _stackPanel.TransformToAncestor(_grid);
      Point point = generalTransform.Transform(new Point(0, 0));

    如果布局在Canvas中:

    可以通过panel.SetLeft等绝对布局,panel.GetLeft等获取绝对布局

    如果是鼠标在控件的位置:

    Mouse.GePosition()

                       [WPF]获取控件间的相对位置

    我们知道WPF有着比较灵活的布局方式,关于某个控件的坐标,Canvas中的元素最简单,我们可以直接通过其GetLeft()与GetTop方法来获取,但其它布局面板中的,以及存在于不同布局面板中的元素中间的相对位置就比较让我们头疼了,其实有简单方法的,不知你有没发现。

    1,获取元素相对于父控件的位置
    使用Vector VisualTreeHelper.GetOffset(Visual visual)方法,其会返回visual在其父控件中的偏移量,然后你再将返回值的Vector对象转换成Point对象就可以了

    2,获取元素相对于祖宗控件或子孙控件的位置
    使用元素的 GeneralTransform TransformToAncetor(Visual ancetor)方法与GeneralTransform TransformToDescendent(Visual descendent),其返回元素相对于祖宗或子孙的GeneralTransform myGeneralTransform ,然后再使用Point thePoint= myGeneralTransform.Transform(new Point(0,0))得到的thePoint对象就是要找的值了。

    3,获取任意两个元素见的相对位置
    有两种方式:
    如果元素是Visual,可以使用元素的GeneralTransform TransformToVisual(Visual visual)方法,然后可以与上文第2点的方法从GeneralTransform 得到thePoint
    如果元素是UIElement,就更简单了,可以使用元素的TranslatePoint(Point pt, UIElement relativeTo)来得到元素上的pt点相对于relativeTo时的值,只有我们传入的pt为(0,0)那么就可以得到元素上(0,0)点的相对位置,即元素的相对位置

  • 相关阅读:
    网络
    分区
    JavaScript概述
    CSS样式属性
    css选择器
    CSS的引入方式
    css介绍
    HTML结构
    常用标签
    HTML介绍
  • 原文地址:https://www.cnblogs.com/xietianjiao/p/6823576.html
Copyright © 2020-2023  润新知