gpt4 book ai didi

c# - 沿 XAML Shapes.Path 获取点

转载 作者:行者123 更新时间:2023-11-30 16:23:43 27 4
gpt4 key购买 nike

我正在尝试从 Silverlight MainWindow.xaml 文件中沿 Shapes.Path 对象获取点。我使用 Expression Blend 来创建路径。

以下代码工作正常,除非我尝试在表达式混合中移动路径,这只会移动边距。显然这并没有计算在内,我从最初创建路径的地方得到了点。

        var pathGeometry = path.Data.GetFlattenedPathGeometry();
var currentPoint = new System.Windows.Point();
var tangentPoint = new System.Windows.Point();
var rList = new List<Point>();
var pointsCount = 10;
for (int i = 0; i < pointsCount; i++)
{
double fraction = (double)i / (double)(pointsCount - 1);

pathGeometry.GetPointAtFractionLength(fraction, out currentPoint, out tangentPoint);

rList.Add(currentPoint);
}
return rList;

关于如何计算 margin 变化有什么建议吗?

最佳答案

啊...我想我明白问题所在了。 PathGeometry没有继承自 UIElement,也就是说它没有任何 Margins 的意义。 Geometry 托管在执行此操作的控件中,实际上是该控件将 Geometry 绘制到屏幕上。如果要将 Geometry 上的点转换为屏幕坐标,则需要找到主机控件的位置并计算偏移量。

我的猜测是您的 PathGeometry 托管在 Path 中控制。 (令人困惑,不是吗?)获取屏幕坐标中的位置相对容易。您可以调用PointToScreen Path 上的方法并将其提供给计算点(可能添加您可能正在应用的任何填充)。获取相对于窗口的点更加复杂。您可以在窗口上调用 PointToScreen(对于点 0,0),然后从窗口的点中减去路径的点。或者,您可以将 Path 放在 Canvas 内(Canvas 直接位于窗口内)并简单地获取 Canvas.Top 和 Canvas.Left。

你没有说你的最终目标是什么,所以很难为你推荐一个特定的解决方案。

关于c# - 沿 XAML Shapes.Path 获取点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11315765/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com