下图显示了Direct2D中的路径几何,它包含5个段,每个段都是一条直线,我的要求是,给定这样一个山,我想得到所有5行。
但似乎没有相关API可以在Direct2D中获取路径几何的段,我看到ID2D1PathGeometry接口提供了GetSegmentCount方法,如果我们无法获取段,为什么Microsoft提供此方法?
答案 0 :(得分:1)
您可以使用ID2D1PathGeometry::Stream()
执行此操作。您必须编写一个实现ID2D1GeometrySink
的类。您可能会发现在一般意义上实现它是有用的,这样它不会查找您现在需要的确切数据,而是可以抽出一个对象树。如果您需要使用什么类型的对象模型的示例,请查看WPF的System.Windows.Media.Geometry
(http://msdn.microsoft.com/en-us/library/system.windows.media.geometry.aspx)。
您也可以轻松地将这些课程转换回ID2D1PathGeometry
,并使用最适合任何情况的方法。我写过两次转换,一旦我意识到他们使用相同的“语言”,就会发现它很简单。我特别发现它有助于组织我对“数字”和“细分”之间差异的理解。
答案 1 :(得分:1)
如果你有一个PathGeometry,那么使用PathGeometry :: Stream()是好的。
但是,如果你有一个基本的Geometry并且想要完成相同的操作,那么你可以执行以下操作:
结果将存入您的GeometrySink。
答案 2 :(得分:0)
实现一个名为SpecializedSink的类,它继承自ID2D1SimplifiedGeometrySink接口,由ID2D1Geometry :: 简化调用的扩展 AddLines 方法来检索几何数据。
建议您通过扩展ID2D1SimplifiedGeometrySink来阅读[几何体检索数据的示例] http://msdn.microsoft.com/en-us/library/windows/desktop/ee453682%28v=vs.85%29.aspx。