【WPF】窗口缩放自适应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【WPF】窗口缩放自适应相关的知识,希望对你有一定的参考价值。

参考技术A   <Grid>

        <Viewbox Stretch=" fill">  

            <Canvas Width=" 525" Height=" 350">

                <Button Content="按键1" HorizontalAlignment="Left" Margin="28,23,0,0" VerticalAlignment="Top" Width="75"/>

                <Button Content="按键2" HorizontalAlignment="Left" Margin="416,275,0,0" VerticalAlignment="Top" Width="75"/>           

            </Canvas>           

        </Viewbox>

    </Grid>

</Window>

主要部分是我们在Canvas最外层添加了ViewBox,由于ViewBox的stretch属性默认是Uniform,所以我们要设置为Fill,这样能保正是填充满窗体,canvas的宽度和高度必须设定,否则显示不出来。

如果它比 WPF XAML 中的窗口大,如何缩放字体大小以适应窗口?

【中文标题】如果它比 WPF XAML 中的窗口大,如何缩放字体大小以适应窗口?【英文标题】:How to scale font size to fit the window if it's larger than the window in WPF XAML? 【发布时间】:2021-10-28 16:02:24 【问题描述】:

不确定这在 XAML 中是否很难做到,但我有一些 TextBlock,我使用固定字体大小在主窗口顶部显示。

如果这比主窗口大,它会调整主窗口的大小。我不想要这个。到目前为止我已经尝试过了,但无法阻止主窗口水平调整大小。

如果 TextBlock 不适合主窗口宽度,我想要调整它的大小。主窗口宽度是动态的,所以我不能使用固定的单位值。

代码如下:

<Viewbox StretchDirection="DownOnly">
    <Grid Name="InfoTextOverlay" Visibility="Hidden" HorizontalAlignment="Center">
        <TextBlock Text="Binding InfoText, ElementName=MyMainWindow" Foreground="White" FontSize="40" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </Grid>
</Viewbox>

【问题讨论】:

这能回答你的问题吗? How to automatically scale font size for a group of controls? 有/没有Viewbox 你的代码不会为我调整主窗口的大小。将窗口的 SizeToContent 属性设置为 Manual ,如果不是。 @Maria,我需要主窗口来适应数据网格控件,所以它需要始终适应其内容,而不是顶部显示的文本块。 @Squirrel.98:谢谢,我今天去看看。 @Squirrel.98:我刚刚检查过,但它似乎覆盖复杂。不知道如何应用于我的案例,因为他有多个文本等。而我只想使用我选择的固定字体大小,除非它不适合我的窗口,然后调整大小以适应一些边距。 【参考方案1】:

如果您想避免自动宽度,请使用 TextWrapping="Wrap"。

如果您需要自动调整文本块的大小,只需删除 FontSize 属性

【讨论】:

以上是关于【WPF】窗口缩放自适应的主要内容,如果未能解决你的问题,请参考以下文章

Halcon图像的自适应显示缩放移动

解决Vitrual Box Linux无法自适应缩放窗口

自适应 比例缩放

如果它比 WPF XAML 中的窗口大,如何缩放字体大小以适应窗口?

winform窗口自适应窗口宽度和高度

VS2013 VB.NET窗口控件怎么做自适应