<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="725">
<StackPanel Margin="16">
<StackPanel Margin="8">
<TextBlock Name="myTextBlock" Margin="4" Text="Hello, world" MouseDown="myTextBlock_MouseDown"/>
</StackPanel>
</StackPanel>
</Window>
private void myTextBlock_MouseDown(object sender, MouseButtonEventArgs e)
{
GeneralTransform generalTransform1 = myTextBlock.TransformToAncestor(this);
Point currentPoint = generalTransform1.Transform(new Point(0, 0));
MessageBox.Show(currentPoint.X.ToString());
MessageBox.Show(currentPoint.Y.ToString());
}
按照MSDN链接的解释,不太看得懂,MSDN到底说的是什么意思,很绕口。上面的示例也是MSDN的原生示例,演示如何使用 TransformToAncestor 方法检索 TextBlock 相对于包含 Window 的偏移量。 偏移量值包含在返回的 GeneralTransform 内。
我想问的是这里求的 TextBlock 相对于 Window 的偏移量,是什么意思啊,这样的结果有什么意义呢?那些场合用得上?
如果是坐标的话,可以用UIElement.TranslatePoint 方法啊( MSDN)。偏移量又是什么呢
5 个解决方案
#1
偏移量 是到参照的距离
#2
此例的话,就是TextBlock的左上角 相对于 Window 左上角的距离吗?X和Y吗?那不就是坐标吗?
#3
对的,就是坐标
#4
坐标偏移量,就是坐标 p1 与 坐标 p2 的差(减法)。多读点数学方面的书就好了。
#5
坐标是相对于原点来说的,一个坐标值表达的是相对于原点的方向。但是 p1减去p2是什么方向?
#1
偏移量 是到参照的距离
#2
此例的话,就是TextBlock的左上角 相对于 Window 左上角的距离吗?X和Y吗?那不就是坐标吗?
#3
对的,就是坐标
#4
坐标偏移量,就是坐标 p1 与 坐标 p2 的差(减法)。多读点数学方面的书就好了。
#5
坐标是相对于原点来说的,一个坐标值表达的是相对于原点的方向。但是 p1减去p2是什么方向?