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

26

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

示例(100%):

alt text
(来源:stegnar.com

缩小的用户控件(70%):

alt text
(来源:stegnar.com

我已经在图片编辑器中实现了这一点,但我想在WPF中实现。 :) 我需要这样调整我的应用程序以适应不同的屏幕分辨率,同时不隐藏任何内容(没有滚动条)。

3个回答

37
您可以尝试使用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>


8

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

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

你不必把每个文本块都放在其中!

5
使用Viewbox(如Milan Nankov所说)是一个很好的想法。但是我必须警告您,它也会缩放其他视觉方面。例如,尺寸为200 X 1000的文本框与尺寸为20 X 100缩放10倍的文本框非常不同。WPF提供了许多布局选项,可以根据容器的大小更改控件的尺寸。但它不会更改文本的大小。Viewbox解决了这个问题,但引入了另一个问题。请查看下面的图像,它显示了在缩放之前和之后使用Viewbox的相同文本框中引入的伪影。
一个可用的技巧是将每个textblock放置在viewbox中。但我认为这可能有些过度,而且我对这个技巧没有任何支持。请自行检查并回复是否实用。
另一个技巧是将控件的高度绑定到字体大小上。在这种情况下,我们需要一个转换器。请参考此答复:在网格中调整TextBox中的字体大小

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接