下图显示了Direct2D中的路径几何图形,它包含5个线段,每个线段都是一条直线,我的要求是,给定这样一个坡度,我想得到所有的5条线。

但是似乎没有相关的接口可以在Direct2D中获取路径几何的线段,我看到ID2D1PathGeometry接口提供了一个方法GetSegmentCount,如果我们不能获取线段,为什么微软提供这种方法呢?
发布于 2012-10-09 02:24:22
您可以使用ID2D1PathGeometry::Stream()来实现这一点。您必须编写一个实现ID2D1GeometrySink的类。你可能会发现,在广义上实现它是很有用的,这样它就可以输出一个对象树,而不是寻找你现在需要的确切数据。如果需要使用哪种类型的对象模型的示例,只需查看WPF的System.Windows.Media.Geometry ( http://msdn.microsoft.com/en-us/library/system.windows.media.geometry.aspx )即可。
您还可以轻松地将这些类转换回ID2D1PathGeometry,并在任何情况下使用最合适或最合适的类。我已经编写了这两个转换,一旦我意识到它们使用的是相同的“语言”,我发现它非常简单。我特别发现它有助于理清我对“数字”和“细分”之间的区别的理解。
发布于 2012-12-15 04:56:06
如果您有PathGeometry,则使用PathGeometry::Stream()比较好。
但是,如果您有一个基本几何体,并且您想要完成相同的操作,则可以执行以下操作:
geometry geometry::PathGeometry
结果将保存在您的GeometrySink中。
发布于 2012-12-16 04:35:18
实现一个名为SpecializedSink的类,该类继承自ID2D1SimplifiedGeometrySink接口(由ID2D1Geometry::Simplify调用以检索几何图形数据的扩展AddLines方法)。
建议您通过扩展ID2D1SimplifiedGeometrySink来阅读example for retrieve data from geometry。
https://stackoverflow.com/questions/12540323
复制相似问题