gpt4 book ai didi

c# - 如果文本超出文本 block 的边界,则更改字体大小

转载 作者:太空狗 更新时间:2023-10-29 20:37:32 26 4
gpt4 key购买 nike

我有一个宽度为 511,高度为 159 的文本 block 。字体大小=28。如果文本超出文本 block 的尺寸,我想更改字体大小,以便显示所有文本。有没有办法做到这一点?也许是一个公式?

最佳答案

此解决方案意味着使用 ViewBox,我认为使用 Wpf 转换功能无需更改文本的字体大小,使用转换(在本例中为 ViewBox)可以实现几乎相同的结果。

不是将 TextBlock 放在 ViewBox 中,而是修改它的模板并将控件放在 ViewBox 中文本出现的位置,例如:

<ControlTemplate TargetType="{x:Type TextBox}">                     
<Microsoft_Windows_Themes:ListBoxChrome x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderFocused="{TemplateBinding IsKeyboardFocusWithin}" SnapsToDevicePixels="true">
<Viewbox HorizontalAlignment="Left">
<ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Viewbox>
</Microsoft_Windows_Themes:ListBoxChrome>

<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>

现在你得到了一个控件,它可以调整文本的大小以适应可用的空间,感谢 WPF。

还有一些例子

text example

关于c# - 如果文本超出文本 block 的边界,则更改字体大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7108446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com