关闭

win10 uwp 获得元素绝对坐标

标签: uwp浮出窗uwp-flyout
951人阅读 评论(0) 收藏 举报
分类:

有时候需要获得一个元素,相对窗口的坐标,在修改他的位置可以使用。

那么 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

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

1
0
查看评论

win10 uwp 模拟网页输入

有时候需要获得网页的 js 执行后的源代码,或者模拟网页输入,如点按钮输入文字。
  • lindexi_gd
  • lindexi_gd
  • 2017-06-26 09:43
  • 1306

用 JavaScript 编写第一个 UWP 应用 - 手机归属地查询

简介以手机归属地查询APP(通用)为例,此实例但界面、简单,学习用JS写 win10 通用。并没有使用到 WinJS API,下一步进行学习和使用。环境依赖win10 Visual Studio 2015创建项目新建 wim10 通用应用项目 项目目录如下 构建程序修改 default.ht...
  • dongsoso
  • dongsoso
  • 2015-12-14 20:41
  • 2084

win10 uwp 获得焦点改变

本文讲的是当我们应用失去焦点时,我们获得事件,当我们应用获得焦点,同样获得事件。同时,在应用不可以见时,我们也可以获得。
  • lindexi_gd
  • lindexi_gd
  • 2017-01-01 08:55
  • 2074

win10 uwp 截图 获取屏幕显示界面保存图片

本文主要讲如何保存我们的屏幕显示的,保存为图片,也就是截图,截我们应用显示的。我们来总的说下,就是用一个滚动条把我们的一个Grid放进去,然后Grid里面存在一张图片和一个TextBlock,图片就是我们需要加水印的,TextBlock就是水印,水印颜色最好渐变,然后使用获取元素图片截图。保存截图就...
  • lindexi_gd
  • lindexi_gd
  • 2016-11-29 10:33
  • 2573

获取网页元素的绝对位置

首先看这张图片上的几个位置,content,就是你所定位元素的位置, 每个元素都有offsetTop和offsetLeft属性,表示该元素的左上角与父容器(offsetParent对象)左上角的距离。所以,只需要将这两个值进行累加,就可以得到该元素的绝对坐标。
  • lsfhack
  • lsfhack
  • 2017-04-08 08:31
  • 361

Android获得控件在屏幕中的绝对坐标

int[] location = new int[2] ; view.getLocationInWindow(location); //获取在当前窗口内的绝对坐标 view.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标 location [0]---&g...
  • ys743276112
  • ys743276112
  • 2016-05-13 16:27
  • 7106

win10 uwp 获得缩略图

有时候需要获得文件或视频的缩略图。 本文提供两个方法,用于获得文件的缩略图和截取视频指定时间的显示图片。
  • lindexi_gd
  • lindexi_gd
  • 2017-06-29 09:59
  • 1054

win10 uwp 入门

UWP是什么我在这里就不说,本文主要是介绍如何入门UWP,也是合并我写的博客。
  • lindexi_gd
  • lindexi_gd
  • 2016-07-27 08:55
  • 4434

js获取dom元素绝对位置

http://www.51xuediannao.com/qd63/index.php/page-2-82-1.html 获取元素的位置属性可以通过 HTMLElement.offsetLeftHTMLElement.offsetTop 但是,这两个属性所储存的数...
  • NRlovestudy
  • NRlovestudy
  • 2016-04-29 17:33
  • 3130

win10 UWP 应用设置

win10 UWP 应用设置 简单的把设置需要的,放到微软自带的LocalSettings LocalSettings.Values可以存放几乎所有数据 如果需要存放复合数据,一个设置项是由多个值组成,可以使用ApplicationDataCompositeValue将多个合并。 存放一个st...
  • lindexi_gd
  • lindexi_gd
  • 2016-01-12 21:01
  • 2359
    个人资料
    • 访问:632348次
    • 积分:9247
    • 等级:
    • 排名:第2400名
    • 原创:242篇
    • 转载:16篇
    • 译文:25篇
    • 评论:240条
    博客专栏
    文章分类
    最新评论