如何像图像一样使用用户控件的相对缩放大小(在图像编辑器中)。
示例(100%):
(来源:stegnar.com)
按比例缩小UC(70%):
(来源:stegnar.com)
我在图片编辑器中实现了这一点,但我想在WPF中。 :)我需要这个来调整我的应用程序到不同的屏幕分辨率,而没有任何隐藏(没有滚动条)。
答案 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克服了这个问题,但它引入了另一个问题。检查下方的图像,该图像在缩放前后的视图框中显示相同的文本框。
可以使用的一个技巧是将每个文本块放在视图框中。但我想这将是一种矫枉过正,我认真对此技巧没有任何支持。请自行检查并回答是否实用。
另一个技巧可能是将控件的高度绑定到字体大小。在这种情况下我们需要一个转换器。请参阅此回复.. Resize font in TextBox in Grid
答案 2 :(得分:5)
您可以将整个容器放入ViewBox
<Viewbox StretchDirection="Both" Stretch="Uniform">
<Grid>...</Grid>
</Viewbox>
您不必将每个文本块放在其中!