如何相对缩放用户控件的大小?
Posted
技术标签:
【中文标题】如何相对缩放用户控件的大小?【英文标题】:How to relative scale size of User Control? 【发布时间】:2010-11-27 20:52:08 【问题描述】:如何像图像一样缩放用户控件的相对大小(在图像编辑器中)。
示例(100%):
(来源:stegnar.com)
缩小 UC (70%):
(来源:stegnar.com)
好吧,我在图片编辑器中实现了这一点,但我想在 WPF 中。 :) 我需要这个来将我的应用程序调整为不同的屏幕分辨率,而没有隐藏(没有滚动条)。
【问题讨论】:
【参考方案1】:您可以尝试放大/缩小其内容以填充可用空间的 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>
【讨论】:
太棒了!这正是我所需要的。【参考方案2】:使用 Viewbox(正如 Milan Nankov 所说)是个好主意。我必须警告您的一件事是它还会放大或缩小其他视觉方面。
例如,尺寸为 200 X 1000 的文本框与放大 10 倍的尺寸为 20 X 100 的文本框非常不同。
WPF 提供了许多布局选项,可以根据容器的大小改变控件的尺寸。但它不会改变文本的大小。 Viewbox 克服了这个问题,但它引入了另一个问题。检查下图,它在缩放前后的视图框中显示了相同的文本框。
可以使用的一个技巧是将每个 文本块 放在一个视图框中。但我想这将是一个矫枉过正,我真的没有任何支持这个把戏。请自己检查并回复是否实用。
另一个技巧可能是将控件的高度绑定到字体大小。在这种情况下,我们将需要一个转换器。请参考这个回复。。Resize font in TextBox in Grid
【讨论】:
【参考方案3】:您可以将整个容器放入 ViewBox
<Viewbox StretchDirection="Both" Stretch="Uniform">
<Grid>...</Grid>
</Viewbox>
您不必将每个文本块都放入其中!
【讨论】:
以上是关于如何相对缩放用户控件的大小?的主要内容,如果未能解决你的问题,请参考以下文章