假设您在画布上画了一个Bezier样条,如下所示:
<Canvas x:Name="SomeCanvas" Width="50" Height="50" Background="Black">
<Path x:Name="SomePath" Data="M0,0C10,10 10,50 50,10" Stroke="Yellow" StrokeThickness="1"/>
</Canvas>如何确定画布中哪些像素被路径的中心相交(这意味着忽略了笔画厚度)?
发布于 2014-08-20 16:44:20
如果您的意思是要沿着路径找到中心点。我认为我们必须对路径的数据做一些事情,这实际上是一个Geometry。Geometry有一个名为GetFlattenedGeometryPath的方法,它返回一个PathGeometry,该方法有一个名为GetPointAtFractionLength的方法。所以你可以试试这样的方法:
Point centerPoint;
Point tg;
SomePath.Data.GetFlattenedGeometryPath()
.GetPointAtFractionLength(0.5, out centerPoint, out tg);如果你的意思是你想找出所有的观点,我认为它在这个问题上有点抽象。从技术上讲,有无穷多的点。因此,您可以使用以下代码查找路径上均匀分布的1000个点:
Point p;
Point tg;
var points = new List<Point>();
for(var i = 0; i < 1000; i++){
SomePath.Data.GetFlattenedGeometryPath()
.GetPointAtFractionLength(i / 1000f, out p, out tg);
points.Add(p);
}https://stackoverflow.com/questions/25408250
复制相似问题