【问题标题】:How to relative scale size of User Control?如何相对缩放用户控件的大小?
【发布时间】:2010-11-27 20:52:08
【问题描述】:

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

示例(100%):


(来源:stegnar.com

缩小 UC (70%):


(来源:stegnar.com

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

【问题讨论】:

    标签: wpf user-controls scale


    【解决方案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>
      

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

      【讨论】:

        猜你喜欢
        • 2015-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-09
        • 1970-01-01
        • 2010-10-04
        • 2021-04-23
        • 2013-05-13
        相关资源
        最近更新 更多