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

简介: 原文:WPF获取相对位置、坐标的方法1.获取鼠标在控件中的坐标: 1 private void item_MouseDown(object sender, MouseButtonEventArgs e) 2 { 3 Point point = e.
原文: 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 + ")";
View Code

完整例子代码:

   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>
View Code

   后台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 }
View Code

   运行结果:

    

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

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

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

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

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

 

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

目录
相关文章
|
3月前
|
C#
WPF/C#:数据绑定到方法
WPF/C#:数据绑定到方法
43 0
|
C# Windows
WPF的WindowsFormsHost上浮动控件方法
如何在WPF的WindowsFormsHost实现浮动控件
294 0
|
C# 前端开发
WPF如何得到一个在用户控件内部的元素的坐标位置
原文:WPF如何得到一个在用户控件内部的元素的坐标位置 例如有这样一个用户控件: 这是主窗口: ...
1431 0
|
C#
WPF获取窗口句柄的方法
原文:WPF获取窗口句柄的方法 通过WPF的互操作帮助类WindowInteropHelper,相关连接:https://msdn.microsoft.com/zh-cn/library/system.
1686 0
|
文字识别 C++
WPF4.0用tablet实现手写输入(更新XP SP3下也能手写输入方法)
原文:WPF4.0用tablet实现手写输入(更新XP SP3下也能手写输入方法)     由于项目需求一个手写输入的控件,纠结了2天,终于搞定了。   主要是由于本人的英语不过关,一直和ocr混淆在一起,研究了Tesseract-OCR,我说奇怪了号称老牌OCR新版本还支持中文,怎么效果这么差,必须写个标准楷体才能够识别...||-_-.。
1095 0
|
C# 存储
WPF中在XAML中实现数据类型转换的两种方法
原文:WPF中在XAML中实现数据类型转换的两种方法 熟悉数据绑定的朋友都知道,当我们在Model中获取一个对象的数据,常常需要对其进行数据转换后显示在UI界面上,比如你用bool类型存储了一个人的性别,但是在界面上却需要经过转化后显示为男或女; 今天又把数据绑定部分又看了一下,在这里就算是做个总...
1055 0
|
C# 容器
在WPF中使用WinForm控件方法
原文:在WPF中使用WinForm控件方法 1、      首先添加对如下两个dll文件的引用:WindowsFormsIntegration.dll,System.Windows.Forms.dll。
1254 0
|
C#
WPF中获取TreeView以及ListView获取其本身滚动条的方法,可实现自行调节scoll滚动的位置(可相应获取任何控件中的内部滚动条)
原文:WPF中获取TreeView以及ListView获取其本身滚动条的方法,可实现自行调节scoll滚动的位置(可相应获取任何控件中的内部滚动条) 对于TreeView而言: TreeViewAutomationPeer lvap = new TreeViewAuto...
2404 0
|
C#
【msdn wpf forum翻译】TextBox中文本 中对齐 的方法
原文:【msdn wpf forum翻译】TextBox中文本 中对齐 的方法原文链接:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/49864e35-1dbf-4292-a361-93f1a8400558 问题:TextBox中文本中对齐,使用 TextBox.HorizontalContentAlignment="Center"行不通(TextBox.VerticalContentAlignment="Center"则会起到预期的作用。
1238 0
|
C#
WPF 获得鼠标相对于屏幕的位置,相对于控件的位置
原文:WPF 获得鼠标相对于屏幕的位置,相对于控件的位置 相对于屏幕的位置   第一步:     ///     /// 用于获得鼠标相对于屏幕的位置    ///     public class Win32    {        [StructLayout(LayoutKind.
1158 0