我想在三角形区域显示文字。但我无法弄清楚如何更改TextBlock的形状,以便文本显示在三角形区域而不是常规矩形区域。
以下是我的UserControl的简化代码:
<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 :(得分: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>
供您参考,网格构造如下:
设置背景三角形图像&amp;我认为这就足够了。
答案 1 :(得分:0)
您需要覆盖TextBox的模板
我建议您获取Blend的副本,从那里提取TextBox的模板,并根据您的需要进行修改。
如果您无法获得Blend,我建议Show Me The Template,这是一个WPF工具,显示大多数WPF控件的默认模板
答案 2 :(得分:0)
只需覆盖文本框的模板,就像这样
<ControlTemplate TargetType="Textbox">
<Path ... define your triangle here>
</ControlTemplate>
然后将文本框上的enter属性设置为true。也对齐续HOR。和垂直ALG。这样它就会在三角形的中间居中。确保使文本框背景透明,这样就不会覆盖三角形边界。
如果您不想超出界限,请将内容展示者放在视图框中。
您还可以查看剪辑属性。