2013-04-07 75 views

回答

2

不幸的是,你正在尋找的是FormattedText [MSDN:12]存在於WPF和WinRT中不存在(我甚至不認爲它甚至在Silverlight還)。

它可能會包含在未來的版本中,因爲它似乎是一個非常受追捧的功能,極其錯過,並且團隊意識到它的遺漏。見這裏:http://social.msdn.microsoft.com

如果您有興趣或者確實需要測量某種類型面部特徵的方法,您可以嘗試編寫一個封裝器,以便我知道這是WinRT可用技術堆棧中的內容,不過它只能通過C++訪問

這裏是一對夫婦跳樓點你的,如果你也想嘗試:

希望這可以幫助,祝你好運-ck

更新

我想了一下,想起TextBlock■找了經常遺忘物BaselineOffset這給您從所選類型的臉部框的頂部刪除基線!所以你可以用同樣的破解大家用來代替MeasureString來代替FormattedText的損失。在這裏,醬:

private double GetBaselineOffset(double size, FontFamily family = null, FontWeight? weight = null, FontStyle? style = null, FontStretch? stretch = null) 
    { 
     var temp = new TextBlock(); 
     temp.FontSize = size; 
     temp.FontFamily = family ?? temp.FontFamily; 
     temp.FontStretch = stretch ?? temp.FontStretch; 
     temp.FontStyle = style ?? temp.FontStyle; 
     temp.FontWeight = weight ?? temp.FontWeight; 

     var _size = new Size(10000, 10000); 
     var location = new Point(0, 0); 

     temp.Measure(_size); 
     temp.Arrange(new Rect(location, _size)); 

     return temp.BaselineOffset; 
    } 

,我用的是要做到這一點: screenshot

完美!對?希望這有助於-ck

+0

哇,是的,這是完美的! 我在查找這個問題時已經看到了這個屬性,但由於某種原因已經解僱了它......但它的工作原理完全正確。 – 2013-04-12 10:56:31