日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Silverlight-TextBlock換行-LineBreak

發(fā)布時間:2024/1/1 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Silverlight-TextBlock換行-LineBreak 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

TextBlock 設(shè)定文字時,也可以使用較直覺的內(nèi)部文字格式,而不使用明確的 Text 屬性集,如以下範(fàn)例:

Copy Code <TextBlock>Hello, world!</TextBlock> 注意事項:

設(shè)定 Text 屬性時並不會保留前置或尾端空白字元,只會保留內(nèi)部空白字元。 如需以 XAML 處理空白字元的詳細(xì)資訊,請參閱 XAML 概觀

使用 Run 和 LineBreak 物件

TextBlock 並不會呈現(xiàn)單一字串,它也可以呈現(xiàn)不同 Run 項目中所包含的一系列字串,其中每一個項目可以擁有不同的字元層級字型屬性。 LineBreak 物件表示 TextBlock 中的明確新行,而且通常用於周圍 Run 項目之間。LineBreakRun 共用一個基礎(chǔ)類別 (Inline),該類別能夠讓 TextBlock 保留其文字模型內(nèi)容的強(qiáng)型別 InlineCollection。 該 InlineCollection 也是 TextBlock XAML 內(nèi)容屬性,只要將多個 RunLineBreak 項目 (Element) 指定為 TextBlock 的子項目 (Element),即可指定 TextBlock 模型中的項目 (Item)。

下列 XAML 範(fàn)例示範(fàn)如何在 TextBlock 中,藉由使用 Run 物件定義數(shù)個不同格式的文字字串,以 LineBreak 分隔。

XAML Copy Code <!-- Display formatted text as Run objects within a TextBlock. --> <Canvas> <TextBlockFontFamily="Arial" Width="400" Text="Sample text formatting runs"><LineBreak/><Run Foreground="Maroon" FontFamily="Courier New" FontSize="24">Courier New 24</Run><LineBreak/><Run Foreground="Teal" FontFamily="Times New Roman" FontSize="18" FontStyle="Italic">Times New Roman Italic 18</Run><LineBreak/><Run Foreground="SteelBlue" FontFamily="Verdana" FontSize="14" FontWeight="Bold">Verdana Bold 14</Run> </TextBlock> </Canvas>

下圖顯示先前 XAML 內(nèi)容範(fàn)例所轉(zhuǎn)譯的格式化文字。

TextBlock rendering multiple Run objects

LineBreak 會強(qiáng)制每個 Run 中的文字換行,以顯示為獨立的一行。 如果沒有使用 LineBreak,每個 Run 中的文字就會連成一行,最後會因為超過 TextBlock 物件寬度或是 Silverlight 內(nèi)容區(qū)域的寬度而遭到裁剪。 下圖顯示格式化文字在沒有使用 LineBreak 物件的情況下的呈現(xiàn)方式。

多個 Run 物件的 TextBlock 呈現(xiàn)方式:沒有 LineBreak 物件的情況下

以程式碼存取 TextBlock 文字模型

TextBlock 文字模型中實際包含兩種屬性:TextInlines。 並不建議您一定要變更 Text 的值,因為它會造成個別 Run 項目 (Item) 上的任一字型項目 (Element) 變得扁平,而且會移除 TextBlockLineBreak 項目 (Element),這個項目原本是以內(nèi)嵌項目形式建構(gòu),而且並不單純的只是 Text。 如需詳細(xì)資訊,請參閱 Inlines

文字換行

TextWrapping 屬性 (Property) 宣告 TextBlock 中文字的換行方式。 依預(yù)設(shè),TextBlock 中的文字不會自動換行。 因為沒有換行,所以根據(jù)其他設(shè)定,文字可能發(fā)生下列其中一種情況:

  • 如果 TextBlock 沒有明確設(shè)定 WidthTextBlock 會根據(jù)其中文字的大小而擴(kuò)展,並且更新 ActualWidth 的值。 不過,TextBlock 一定會在某個其他的容器父項目中,而且會到達(dá)配置父項的鏈結(jié) (Chain),此處也一定是寬度條件約束。 如果超過執(zhí)行的配置條件約束寬度,則會導(dǎo)致文字被剪裁。

  • 如果 TextBlock 已明確設(shè)定 Width,則如果超過固定的 WidthTextBlock 會自行進(jìn)行文字剪裁。

如果要使用自動換行,請將 TextWrapping 設(shè)定為列舉值 Wrap。 例如,XAML 中的 <TextBlock Text="The quick red fox jumped over the lazy brown dog." TextWrapping="Wrap" />。 開啟文字換行:

  • 如果 TextBlock 沒有明確設(shè)定 Width,則文字會在目前執(zhí)行的配置條件約速寬度的位置進(jìn)行自動換行。

  • 如果 TextBlock 已明確設(shè)定 Width,則文字會在固定的 Width 位置進(jìn)行自動換行。

因為 TextBlockActualWidth 一定會回報文字已擴(kuò)展的大小 (即使與配置容器不符也是如此) 所以您可以透過程式設(shè)計的方式偵測被剪裁的文字。 只要您確切知道在哪裡讀取執(zhí)行剪裁之配置容器的 Width,便可以比較這兩個值。

如需詳細(xì)資訊,請參閱 TextBlockTextWrapping

未換行與換行文字的 TextBlock 呈現(xiàn)方式
TextWrapping 對 ActualWidth 和 ActualHeight 的影響方式

多行 TextBlock 文字

會因為自動換行或明確 LineBreak 項目這兩種因素,TextBlock 中的文字,可能會以多行顯示。 TextBlock 的下列兩個屬性會影響多行文字的顯示方式:LineHeight 以及 LineStackingStrategyLineHeight 設(shè)定整體 TextBlock 中的每一行內(nèi)容的高度。 LineHeight 其實是基準(zhǔn)高度的基準(zhǔn),如此一來,如果您設(shè)定小於 FontSizeLineHeight,文字可能會以垂直維度被切斷。 通常,您會保留不設(shè)定 LineHeight,而仰賴,根據(jù) FontSize 加上位移呈現(xiàn)有效文字行高度的預(yù)設(shè)值。如果使用 LineStackingStrategy,則它會影響預(yù)設(shè)的演算法。 LineStackingStrategy..::.MaxHeight (預(yù)設(shè)值) 會以字型中任一字元的最大高度做為有效文字行高度的基準(zhǔn)。LineStackingStrategy..::.BlockLineHeight 會以「區(qū)塊」字型設(shè)計度量 (也會儲存為字型中的值) 做為有效文字行高度的基準(zhǔn)。

套用轉(zhuǎn)換到 TextBlock 文字

轉(zhuǎn)換可改變您的應(yīng)用程式中所顯示的文字。 轉(zhuǎn)換是一般的 UI 項目概念,適用於許多不同的類別,包括文字項目。 您會在文字上使用轉(zhuǎn)換效果以及其他可能的使用案例包含下列:

RotateTransform,反轉(zhuǎn)文字

ScaleTransform,用於大於字型中所繼承之支援大小上限的文字

SkewTransform,用於切變或斜體模擬

TranslateTransform,用於位移與陰影效果

當(dāng)您在文字中套用轉(zhuǎn)換時,首先應(yīng)該考慮是否還有其他方法可以使用文字項目屬性而產(chǎn)生類似的效果。 例如,如果字型家旅支援斜體 FontStyle,那麼比起套用 SkewTransform,它的結(jié)果在視覺上能夠產(chǎn)生更吸引人的效果,或者,設(shè)定 FontSize 並使用字型啟用的提示與特點時,比較在文字上設(shè)定 ScaleTransform,也可以獲得較理想的效果。

您可能需要在文字上使用轉(zhuǎn)換的一個使用案例是,您可以設(shè)定轉(zhuǎn)換的動畫,以產(chǎn)生視覺效果。

建立 TextBlock 文字的動畫

許多文字屬性 (Property) 的值可以建立成動畫,包含 FontSize 的文字大小、透過 TranslateTransform 的位置和色彩。 如需哪些屬性值類型支援動畫的詳細(xì)資訊,請參閱動畫概觀

將文字屬性 (尤其是大小或前景筆刷) 建立成動畫可能會耗用許多系統(tǒng)資源。 這是因為 Silverlight 在呈現(xiàn)文字時,會使用提示來使每個文字圖像變平滑。 如果您建立文字大小的動畫 (藉由使用 TransformFontSize),則 Silverlight 會提示每個畫面的圖像,這是很耗費資源的,並可能會造成畫面捨棄。 如果應(yīng)用程式需要對大型文字進(jìn)行動態(tài)縮放變更,則建議您使用下列其中一種替代方案:

  • 以向量圖形模擬文字,例如 Path

  • 在要在其中設(shè)定文字動畫的項目上,將附加屬性 TextOptions..::.TextHintingMode 設(shè)定為值 Animated。 如需詳細(xì)資訊,請參閱 TextOptions

利用LineBreak實現(xiàn)文本豎排:實做見 泡菜肉絲?的博客?http://www.cnblogs.com/JinDin/archive/2010/03/21/1691206.html

總結(jié)

以上是生活随笔為你收集整理的Silverlight-TextBlock換行-LineBreak的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。