• 2018-8-10-win10-uwp-获得元素绝对坐标


    title author date CreateTime categories
    win10 uwp 获得元素绝对坐标
    lindexi
    2018-08-10 19:16:51 +0800
    2018-2-13 17:23:3 +0800
    Win10 UWP

    有时候需要获得一个元素,相对窗口的坐标,在修改他的位置可以使用。 那么 UWP 如何获得元素坐标? 我提供了一个方法,可以获得元素的坐标。

    首先需要获得元素,如果没有获得元素,那么如何得到他的坐标?

    假如 xaml 是这样,而我需要获得 MainTextBlock 相对窗口的坐标

        <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
            <TextBlock x:Name="MainTextBlock" Margin="10,10,10,10" Text="Hello" />
        </Grid>

    那么获得元素绝对坐标可以这样写,绝对坐标的意思就是元素相对窗口的坐标。

             public MainPage()
            {
                this.InitializeComponent();
                var t = MainTextBlock.TransformToVisual(Window.Current.Content);
                Point screenCoords = t.TransformPoint(new Point(0, 0));
            }

    上面代码就可以获得元素坐标,坐标相对于窗口

    那么如何获得他相对其他元素的坐标?

    假如需要获得元素相对他的上坐标,这时可以看下面代码

                var t = MainTextBlock.TransformToVisual((UIElement)MainTextBlock.Parent);
                Point screenCoords = t.TransformPoint(new Point(0, 0));

    于是可以看到 TransformToVisual 传入的是哪个元素,就是获得相对于这个元素的坐标。

    获得元素的坐标有什么用?可以用在如 Flyout的定位,如果使用了 ToggleButton ,他没有自己 Flyout ,所以就需要在其他地方定义一个 Flyout 然后通过获得控件位置显示出来。如何指定 Flyout 的位置参见 win10 uwp 右击浮出窗在点击位置

    所以就可以让浮出窗在需要显示的按钮上显示,下面的图片是我偷一个大神的,他就是使用这个方法做出来。

    参见:http://stackoverflow.com/questions/12387449/how-to-get-the-absolute-position-of-an-element/12388558#12388558

  • 相关阅读:
    Cheatsheet: 2010 05.25 ~ 05.31
    Cheatsheet: 2010 07.01 ~ 07.08
    Cheatsheet: 2010 07.22 ~ 07.31
    Cheatsheet: 2010 06.01 ~ 06.07
    Cheatsheet: 2010 05.11 ~ 05.17
    Cheatsheet: 2010 06.08 ~ 06.15
    Cheatsheet: 2010 06.16 ~ 06.22
    Cheatsheet: 2010 06.23 ~ 06.30
    2020.7.20第十五天
    2020.7.19第十四天
  • 原文地址:https://www.cnblogs.com/lindexi/p/12086180.html
Copyright © 2020-2023  润新知