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

时间:2009-09-13 06:20:39

标签: wpf user-controls scale

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

示例(100%):

alt text
(来源:stegnar.com

按比例缩小UC(70%):

alt text
(来源:stegnar.com

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

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:5)

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

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

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

Artifacts introduced by the use of viewbox

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

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

答案 2 :(得分:5)

您可以将整个容器放入ViewBox

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

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