WPF获取相对位置、坐标的方法

1.获取鼠标在控件中的坐标:

 1 private void item_MouseDown(object sender, MouseButtonEventArgs e)
 2 {
 3         Point point = e.GetPosition(lbl);
 4
 5  }
 6
 7 //或者直接使用Mouse类的静态方法GetPosition(),
 8 //需要注意的是参数为IInputElement类型,也就是说要是能输入的控件
 9 Point point2 = Mouse.GetPosition(lbl2);
10 lbl2.Content = "(" + point2.X + ", " + point2.Y + ")";

完整例子代码:

XAML代码

 1 <Window x:Class="WpfGetPointDemo.MainWindow"
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         Title="MainWindow" Height="350" Width="525">
 5     <Grid x:Name="grid" MouseDown="item_MouseDown">
 6         <Label Background="Red" x:Name="lbl" Margin="293.855,59.398,66.145,77.319"/>
 7         <Label Background="GreenYellow" x:Name="lbl2" Margin="29.488,59.398,327.512,69.969"/>
 8         <Label Background="blue" x:Name="lbl3" HorizontalAlignment="Left" Margin="133.048,268.187,0,0" VerticalAlignment="Top" Width="250.952" Height="51.813"/>
 9         <Button x:Name="btn" HorizontalAlignment="Left" Margin="177.325,10,0,0" VerticalAlignment="Top" Width="135.09" RenderTransformOrigin="0.012,0.547" Height="43.252"/>
10     </Grid>
11 </Window>

后台C#代码

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Windows;
 6 using System.Windows.Controls;
 7 using System.Windows.Data;
 8 using System.Windows.Documents;
 9 using System.Windows.Input;
10 using System.Windows.Media;
11 using System.Windows.Media.Imaging;
12 using System.Windows.Navigation;
13 using System.Windows.Shapes;
14
15 namespace WpfGetPointDemo
16 {
17     /// <summary>
18     /// Interaction logic for MainWindow.xaml
19     /// </summary>
20     public partial class MainWindow : Window
21     {
22         public MainWindow()
23         {
24             InitializeComponent();
25         }
26
27         private void item_MouseDown(object sender, MouseButtonEventArgs e)
28         {
29             Point point = e.GetPosition(lbl);
30             lbl.Content = "("+point.X+", "+point.Y+")";
31
32             Point point2 = Mouse.GetPosition(lbl2);
33             lbl2.Content = "(" + point2.X + ", " + point2.Y + ")";
34
35             Point point3 = Mouse.GetPosition(grid);
36             lbl3.Content = "(" + point3.X + ", " + point3.Y + ")";
37
38             Point point4 = Mouse.GetPosition(btn);
39             btn.Content = "(" + point4.X + ", " + point4.Y + ")";
40         }
41     }
42 }

运行结果:

2.获取控件相对于两一个控件的坐标:

2.1. 直接使用  control1.TranslatePoint(new Point(), control2)

1 Point point = rectangle.TranslatePoint(new Point(),canvas);
2  

2.2.获取控件在Window中的坐标

1 Window window =  Window.GetWindow(canvas);
2 Point  point  =  canvas.TransformToAncestor(window).Transform(new Point(0, 0));  

引用:http://www.fengfly.com/plus/view-210427-1.html

时间: 2024-08-03 09:39:19

WPF获取相对位置、坐标的方法的相关文章

WPF 获取系统 DPI 的多种方法

原文:WPF 获取系统 DPI 的多种方法 由于 WPF 的尺寸单位和系统的 DPI 相关,我们有时需要获取 DPI 值来进行一些界面布局的调整,本文汇总了一些 WPF 程序中获取系统 DPI 的方法. 首先,定义如下结构体来分别保存 X 方向 和 Y 方向的分量值,通常情况下两个值是一致的. public struct Dpi { public double X { get; set; } public double Y { get; set; } public Dpi(double x, d

js获取鼠标位置的各种方法

在一些DOM操作中我们经常会跟元素的位置打交道,鼠标交互式一个经常用到的方面,令人失望的是不同的浏览器下会有不同的结果甚至是有的浏览器下没结果,这篇文章就上鼠标点击位置坐标获取做一些简单的总结,没特殊声明代码在IE8,FireFox,Chrome下进行测试兼容 鼠标点击位置坐标 相对于屏幕 如果是涉及到鼠标点击确定位置相对比较简单,获取到鼠标点击事件后,事件screenX,screenY获取的是点击位置相对于屏幕的左边距与上边距,不考虑iframe因素,不同浏览器下表现的还算一致. functi

CGRectGet 获取控件坐标的方法

1. CGRectGetMidX表示得到一个frame中心点的X坐标,CGRectGetMidY表示得到一个frame中心点的Y坐标imageView.center =CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds)); 2. CGRectInset CGRect CGRectInset (CGRect rect,CGFloat dx,CGFloat dy);该结构体的应用是以原rect为中心,再参考dx,dy,

wpf获取webbroswer的两个方法

//跳转前的地址 private void WebBrowser_BeforeNavigate2(object pDisp, ref object URL, ref object Flags, ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel) { String strUri = (URL == null ? "Null" : URL.ToString()); Mes

WPFの获取任意元素的位置

原文:WPFの获取任意元素的位置 如果布局在Grid中: 方法一: //_stackPanel为子元素,_grid为父元素 Point point = _stackPanel.TranslatePoint(new Point(0, 0), (UIElement)_grid); 方法二: //_stackPanel为子元素,_grid为父元素 GeneralTransform generalTransform = _stackPanel.TransformToAncestor(_grid); Po

ios获取当前城市 ,位置,坐标,经纬度

有些时候可能只是用到地图的某些功能,比如获取当前所在的城市,然后根据城市返回相应的数据,而不需要其他操作,每次都要写那么几行代码,所以就做了小小的封装,后期可能会添加新功能,来适应app的各种需求(使其变得更为强大) github打包地址:https://github.com/iOSSinger/SGLocation 核心代码: 使用方法: //一行代码获取当前城市 [loc setGetCity:^(NSString *city) { NSLog(@"%@",city); }]; /

JS获取鼠标位置的三种方法

在一些DOM操作中我们经常会跟元素的位置打交道,鼠标交互式一个经常用到的方面,令人失望的是不同的游览器下会有不同的结果甚至是有的游览器下没结果,这篇文章就鼠标点击位置坐标获取做一些简单的总结. 获取鼠标位置首先要了解什么是event,event是一个声明了全局变量的一个对象,在chrome和IE下,可以随意访问,对于好奇的朋友console.log一下event.但!!!Firefox下是没有event这个对象的!! 好消息的是:在IE8,chrome下,是有event这个对象的! 鼠标点击位置

WPF获取应用程序路径方法,获取程序运行路径方法

试了好多种方法,在WPF中获取工程的路径都没能解决掉,暂时用的绝对路径"D://WPF.....",但是发布的时候出现问题了,放到别的电脑上找不到路径,又开始了地毯式搜索,终于解决了,跟遇到此类问题的朋友分享下解决办法,如下: AppDomain.CurrentDomain.BaseDirectory +文件名即可,简单吧? //获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称. string str5=Application.StartupPath; //可获得当前执行的

WPF 获取鼠标屏幕位置、窗口位置、控件位置

原文:WPF 获取鼠标屏幕位置.窗口位置.控件位置 public struct POINT { public int X; public int Y; public POINT(int x, int y) { this.X = x; this.Y = y; } } [DllImport("user32.dll")] public static extern bool GetCursorPos(out POINT lpPoint); //e.GetPosition(this); //(e