2011-08-26 27 views
4

我想在三角形區域顯示文本。但我無法弄清楚如何改變TextBlock的形狀,使文本顯示在三角形區域而不是常規的矩形區域。顯示非矩形文本塊

這裏是我的用戶的簡化代碼:

<Grid > 
    <Image Height="100" Width="100" /> <!-- Some triangular image --> 
    <TextBlock Height="100" Width="100" Text="This text should fill up the triangualr image area"/> 
</Grid> 
+0

Silverlight或WPF? – AnthonyWJones

+0

我在WPF中遇到了這個問題,但我想這將是Silverlight中類似的問題\解決方案。請糾正我,如果我錯了 –

+0

更多的時候通常會意識到解決方案大不相同。在你的問題中,你是否需要WPF,Silverlight或Both這兩種解決方案時要非常清楚。 – AnthonyWJones

回答

0

你需要覆蓋文本框的模板

我會建議得到的Blend副本,從那裏提取文本框的模板,並修改它以滿足您的需求。

如果無法獲得配方,我建議Show Me The Template,這是一個WPF工具,顯示了大多數WPF控件

+0

我想你錯過了OP想要在三角形區域顯示文本,而不是在三角形文本框中。 – loxxy

+0

感謝解決方案Rachel。我的機器上有Blend。但我不知道如何將模板設置爲三角形區域,以便文本顯示在那裏。你可以給一個樣本xaml解決方案嗎?我也會嘗試自己並肩做。 –

1

好樣矯枉過正的解決方案,但內部網內容的默認模板將在排列三角形如果類似的東西被遵循:

<Grid> 
    <Image Height="200" Width="200" /> 
    <Grid Width="200"> 
     <Grid.RowDefinitions> 
      <RowDefinition /> 
      <RowDefinition /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 

     <TextBlock Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="1" Text="Line 1" HorizontalAlignment="Center"/> 
     <TextBlock Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Text="This is Line 2." HorizontalAlignment="Center"/> 
     <TextBlock Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="5" Text="This is Line 3. Wud be longest." HorizontalAlignment="Center"/> 
    </Grid> 
</Grid> 

爲了便於參考,該網格構造如下:

Refrence image

設置背景三角形圖像&我想這就夠了。

+0

實際上爲了簡單起見,我在我的問題中在TextBlock中顯式設置了Text屬性。實際上,我通過綁定來設置文本。因此根據文本寬度將文本分成3個不同的部分將會非常複雜。 –

+0

@Souvik:無論您最終使用哪種解決方案__ will ___都會很複雜。 – AnthonyWJones

+0

@Anthony - 使用模板可能會是一個更乾淨的解決方案(因爲您不必進行算術運算來查找文本寬度)。即使在兩種複雜的解決方案中,您總是可以使用較小的複雜解決方案。我試圖找出較小的複雜和乾淨的一個。 –

0

只是簡單地覆蓋文本框的模板,這樣

<ControlTemplate TargetType="Textbox"> 
    <Path ... define your triangle here>    
</ControlTemplate> 

,然後設置輸入屬性的文本框爲true。也對齊續。 HOR。和vert。 ALG。這樣它就在三角形的中間居中。請確保您使文本框背景透明,以免覆蓋三角形邊界。

如果您不想超出範圍,請將內容演示者放在視圖框內。

您還可以查看剪輯屬性。