25

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

示例(100%):

替代文字
(来源:stegnar.com

缩小 UC (70%):

替代文字
(来源:stegnar.com

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

4

3 回答 3

36

您可以尝试放大/缩小其内容以填充可用空间的 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>

于 2009-09-13T08:05:15.077 回答
8

您可以将整个容器放入 ViewBox

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

您不必将每个文本块都放入其中!

于 2012-03-30T22:54:32.970 回答
5

使用 Viewbox(如 Milan Nankov 所说)是一个好主意。我必须警告您的一件事是它还会放大或缩小其他视觉方面。

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

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

使用viewbox引入的神器

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

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

于 2009-09-13T09:57:41.397 回答