如何相对缩放用户控件的大小?

问题描述 投票:21回答:3

如何相对缩放用户控件的大小,如图像(在图像编辑器中)。

示例(100%):

alt text (来源:stegnar.com

缩小UC(70%):

alt text (来源:stegnar.com

我在图片编辑器中实现了这一点,但我想在WPF中。 :)我需要这个来调整我的应用程序到不同的屏幕分辨率,而没有任何隐藏(没有滚动条)。

wpf user-controls scale
3个回答
30
投票

您可以尝试使用ViewBox控件来扩展/缩小其内容,以便填充可用空间。

<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="Window1">
<Grid>
    <Viewbox StretchDirection="Both" Stretch="Uniform">
        <local:UserControl1 Height="600" Width="600"/>
    </Viewbox>
</Grid>


5
投票

您可以将整个容器放入ViewBox中

<Viewbox StretchDirection="Both" Stretch="Uniform">
  <Grid>...</Grid>
</Viewbox>

您不必将每个单独的文本块放入其中!


5
投票

使用Viewbox(正如米兰·南科夫所说)是一个好主意。我必须警告你的一件事是它也放大或缩小其他视觉方面。

例如,尺寸为200 X 1000的文本框与尺寸为20 X 100放大10倍的文本框非常不同。

WPF提供了许多布局选项,可以根据容器的大小更改控件的尺寸。但它不会改变文本的大小。 Viewbox克服了这个问题,但它引入了另一个问题。检查下方的图像,该图像在缩放前后的视图框中显示相同的文本框。

可以使用的一个技巧是将每个文本块放在视图框中。但我想这将是一种矫枉过正,我认真对此技巧没有任何支持。请自行检查并回答是否实用。

另一个技巧可能是将控件的高度绑定到字体大小。在这种情况下我们需要一个转换器。请参阅此回复.. Resize font in TextBox in Grid

© www.soinside.com 2019 - 2024. All rights reserved.