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

Pet*_*nar 23 wpf user-controls scale

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

示例(100%):

替代文字http://stegnar.com/pic/normalPicture.png

缩小UC(70%):

替代文字http://stegnar.com/pic/normalPicture70percent.png

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

Mil*_*kov 32

您可以尝试使用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>
Run Code Online (Sandbox Code Playgroud)


小智 6

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

<Viewbox StretchDirection="Both" Stretch="Uniform">
  <Grid>...</Grid>
</Viewbox>
Run Code Online (Sandbox Code Playgroud)

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


Tra*_*ife 5

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

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

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

使用viewbox引入的工件

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

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