有一种自动的方式获得的所有要点的一个椭圆的行程,没有充分?

有帮助吗?

解决方案

通过使用Reflector我发现EllipseGeometry类中有一个GetPointList()方法,不幸的是它是私有的。也许你可以通过反射调用它,但这听起来像是一个非常糟糕的黑客...我会看到我是否找到另一种方式......

其他提示

在WPF没有实际的"积分"在一个几何-它是无限光滑的。这可以看出,通过放大的一个椭圆。你可以去到1,000,000x放大,你仍然可以看到曲和不点。

由于WPF形状不是由分,你的问题可以interepted在几个方面。你可以寻找任何这些:

  • 一个列表中的点接近边界的椭圆(折线近似)
  • 一定像素所涵盖的椭圆包括填写
  • 一定像素的复盖的边缘椭圆的

这里是该方案在每一种情况:

如果你是在寻找一个近似的椭圆如离散点(ie。虚线版本,看起来像一个椭圆),使用这个代码:

  PolyLineSegment segment = 
    ellipse.DefiningGeometry
      .GetFlattenedPathGeometry(1.0, ToleranceType.Absolute)
      .Figures[0].Segments[0] as PolyLineSegment;

  foreach(Point p in segment.Points)
    ...

如果你是在寻找像素的影响,则需要RenderTargetBitmap:

  RenderTargetBitmap rtb =
    new RenderTargetBitmap(width, height, 96, 96, PixelFormat.Gray8);
  rtb.Render(ellipse);
  byte[] pixels = new byte[width*height];
  rtb.CopyPixels(pixels, width, 0);

任何零价值素[]是部分地涵盖由椭圆。这将包括分内部以椭圆如果椭圆具有填补。

如果你需要得到的只有素沿着边缘但你椭圆满的,或者反之亦然,您可以创建一个新的形状传递给RenderTargetBitmap:

  var newEllipse = new Path
  {
    Data = ellipse.DefiningGeometry,
    Stroke = Brushes.Black,
  };
  RenderTargetBitmap rtb = ...
    [same as before]
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top