2017-08-21 70 views
1

我有一個非常簡單的Geometry對象:C#幾何獲得積分(開行)

var geometry = Geometry.Parse("F1M-76,-26.5L14,-26.5 14,-17.5 156,-17.5"); 

我想那Geometry物體內部各點:

-76,-26.5 
14,-26.5 
14,-17.5 
156,-17.5 

什麼,以獲得最佳方式這些點?

我想:

var allfigs = geometry.GetFlattenedPathGeometry().Figures.ToList(); 
allfigs.AddRange(geometry.GetOutlinedPathGeometry().Figures); 
allfigs.AddRange(geometry.GetWidenedPathGeometry(new Pen()).Figures); 

,讓我人物的唯一行是最後一行,然而在這些數字不匹配原始點的點...他們是通過的寬度偏差Pen

回答

1

試試這個:

var geometry = Geometry.Parse("F1M-76,-26.5L14,-26.5 14,-17.5 156,-17.5"); 

char[] UpperCaseChars = new char[] 
{ 
    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 
    'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 
    'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 
    'Y', 'Z',' ' 
}; 

int indexOfM = geometry.ToString().IndexOf('M'); 
var a = geometry.ToString().Substring(indexOfM).Split(UpperCaseChars); 
+0

它的工作原理,但它是一個有點哈克。不能保證它會繼續工作,因爲我的線條更詳細。 – ManIkWeet

+0

實際上我使用這段代碼幾乎一年沒有任何問題,因爲我沒有找到任何替代方案。 – tabby

+1

你的代碼工作正常,它激勵我嘗試其他有效的東西。我將把你的代碼標記爲答案。它激發了我對'ToString'和'Parse'幾何對象的啓發,它似乎在給出'LineSegment'後做了:) PS:確保在那裏有'CultureInfo.InvariantCulture'! – ManIkWeet