首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >沿XAML Shapes.Path获取点

沿XAML Shapes.Path获取点
EN

Stack Overflow用户
提问于 2012-07-04 01:05:51
回答 1查看 1.5K关注 0票数 3

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

下面的代码运行良好,除非我尝试在expression blend中移动路径,它只移动边距。显然,这并没有计算在内,我从路径最初创建的地方获得了点。

代码语言:javascript
复制
        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;

关于如何让保证金变化也计算在内有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2012-07-04 01:40:07

啊..。我想我看到了问题所在。PathGeometry不是从UIElement继承的,这意味着它没有任何边距。Geometry驻留在执行此操作的控件中,而正是该控件实际将Geometry绘制到屏幕上。如果要将Geometry上的一个点转换为屏幕坐标,则需要找到宿主控件的位置并计算偏移量。

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11315765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档