【问题标题】:WPF : Automatic controls sizingWPF:自动控制大小
【发布时间】:2009-10-25 21:40:04
【问题描述】:

我想知道 WPF 中是否有一种自动控制大小的功能。

我的意思是,一种根据用户的屏幕分辨率自动调整元素大小的方法,而无需在代码中定义它。

谢谢。

【问题讨论】:

  • 您能举个例子说明您正在尝试做什么吗?你可以写

标签: wpf resize resolution


【解决方案1】:

首先,WPF 使用设备独立像素,这意味着它会根据用户选择的 DPI 进行适当缩放。也就是说,我不认为您在这里询问 DPI,而是询问有关分辨率缩放的问题。

如果您希望您的 UI 扩展到 Window 提供的可用空间,您可以使用 a ViewBox control 作为 Window 的根元素。然后,您放入其中的所有内容都将根据您配置 Viewbox 的方式进行缩放。

请记住,这不是应用程序使用的典型方法,因为它们通常会自行增长/重排以利用更多空间。例如,可以使用 Grid 来提供 UI 空间中更重要的部分,而不是另一个部分。

【讨论】:

    【解决方案2】:

    答案是肯定的。如果您希望控件根据窗口大小调整其大小,有很多方法可以做到。

    对于几乎任何控件,这些都是有用的:

    HorizontalAlignment="Stretch"
    VerticalAlignment="Stretch"
    Margin="..." (set your margin to control the position)
    

    对于使用网格的灵活布局:

    <Grid>
    ColumnDefinition.Width="*"
    RowDefinition.Height="*"
    

    对于被面板包围的中心区域,或填充行/列的其余部分:

    <DockPanel>
    

    为了保持相同的形状但拉伸或收缩以适应:

    <ViewBox>
    

    还有很多其他的。

    如果您希望您的控件在屏幕上根据用户的 Windows 显示设置(例如 DPI)变大或变小,默认情况下会发生。如果用户让系统图标和字体变大,你的文字、图标、字体等也会变大。

    如果要将屏幕上对象的大小与特定的系统设置绑定,可以绑定到 SystemParameters 和 SystemFonts 类中的属性,例如:

    SystemFonts.CaptionFontSize
    SystemFonts.MenuFontSize
    SystemFonts.IconFontSize
    SystemFonts.StatusFontSize
    
    SystemParameters.IconHeight
    SystemParameters.IconVerticalSpacing
    SystemParameters.MaximizedPrimaryScreenHeight
    

    这些设置大约有 75 个。通常你不会使用这些,因为 WPF 根据 DPI 对对象大小进行的正常调整通常就足够了。

    通常,您不希望将屏幕上的对象强制为特定数量的像素,因为即使最终用户将 Windows 配置为使对象看起来很大,它们在高分辨率屏幕上也会显得很小。这不会是一件好事。这里的一个例外是,如果您想将屏幕截图捕获为特定屏幕分辨率的位图。在这种情况下,您可以按如下方式设置您的尺寸:

    control.Height =
      desiredHeightInActualScreenPixels
        * System.Windows.SystemParameters.MenuHeight
        / System.Windows.Forms.SystemInformation.MenuHeight;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 2011-07-03
      • 2011-09-08
      • 1970-01-01
      • 2011-07-18
      • 2021-02-28
      相关资源
      最近更新 更多